<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>姜丝儿的祖屋 &#187; dos 批处理 wsh</title>
	<atom:link href="http://www.jiangsi.com/tags/dos-%e6%89%b9%e5%a4%84%e7%90%86-wsh/feed" rel="self" type="application/rss+xml" />
	<link>http://www.jiangsi.com</link>
	<description>概不出租</description>
	<lastBuildDate>Tue, 02 Aug 2011 03:53:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>dos很强大</title>
		<link>http://www.jiangsi.com/archives/427</link>
		<comments>http://www.jiangsi.com/archives/427#comments</comments>
		<pubDate>Wed, 18 Jun 2008 05:52:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[工作/互联网]]></category>
		<category><![CDATA[dos 批处理 wsh]]></category>

		<guid isPermaLink="false">http://www.jiangsi.com/archives/427</guid>
		<description><![CDATA[&#160;&#160;&#160; 最近有一个小项目需要做一些在windows服务器上的调度工作，之前也一直困扰在这里，用php或者python也可以解决问题，但是需要在windows服务器再安装环境，想了想，还是希望用最简单的dos脚本来完成工作。 &#160;&#160;&#160; dos脚本，其实在windows2003中已经有了很多增强，除了原有习惯使用的dos命令之外，还可以使用 wsh(Windows Scripting Host)脚本混合使用。对一些简单的工作有很好的帮助。 下面把这个小项目用的几个好玩的命令给show一下。 &#160;&#160; 1）forfiles&#160;&#160;&#160;&#160; forfiles以前没有用过，是可以遍历你指定的目录，按照你的要求，遍历指定的日期、文件大小等的条件，然后进行操作&#160; 相当与对files的for命令。到微软上看帮助。我用的是时间参数，删除掉30天之前的文件。FORFILES /D -30 /P d:\datafile\ /M *.* /s /C &#8220;cmd /c del @path&#8221;&#160;&#160; d:\datafile是我的工作目录，这个命令可以删除掉30天以前创建的文件，可惜有一个美中不足，就是不能删除目录，用forfiles如果不加参数是可以遍历出目录来的，但是加了参数，就无法遍历或者很麻烦了。然后forfiles之后。增加了一个遍历删除空目录的命令 FORFILES /D -30 /P d:\datafile\ /M *.* /s /C &#8220;cmd /c del @path&#8221; d:cd\cd datafile rem =====for /f &#8220;delims=&#8221; %%i in (&#8216;dir /ad /b /s&#8217;) do call :rd_dir_empty &#8220;%%i&#8221;goto :eof [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;&nbsp;&nbsp; 最近有一个小项目需要做一些在windows服务器上的调度工作，之前也一直困扰在这里，用php或者python也可以解决问题，但是需要在windows服务器再安装环境，想了想，还是希望用最简单的dos脚本来完成工作。
<p>&nbsp;&nbsp;&nbsp; dos脚本，其实在windows2003中已经有了很多增强，除了原有习惯使用的dos命令之外，还可以使用 wsh(Windows Scripting Host)脚本混合使用。对一些简单的工作有很好的帮助。
<p>下面把这个小项目用的几个好玩的命令给show一下。
<p>&nbsp;&nbsp; 1）forfiles&nbsp;&nbsp;&nbsp;&nbsp; forfiles以前没有用过，是可以遍历你指定的目录，按照你的要求，遍历指定的日期、文件大小等的条件，然后进行操作&nbsp; 相当与对files的for命令。<a href="http://technet2.microsoft.com/WindowsServer/zh-CHS/Library/9660fea1-65c7-48cf-b466-204ba159381e2052.mspx?mfr=true" target="_blank">到微软上看帮助。</a>我用的是时间参数，删除掉30天之前的文件。FORFILES /D -30 /P d:\datafile\ /M *.* /s /C &#8220;cmd /c del @path&#8221;&nbsp;&nbsp; d:\datafile是我的工作目录，这个命令可以删除掉30天以前创建的文件，可惜有一个美中不足，就是不能删除目录，用forfiles如果不加参数是可以遍历出目录来的，但是加了参数，就无法遍历或者很麻烦了。然后forfiles之后。增加了一个遍历删除空目录的命令
<p>FORFILES /D -30 /P d:\datafile\ /M *.* /s /C &#8220;cmd /c del @path&#8221;
<p>d:<br />cd\<br />cd datafile
<p>rem =====<br />for /f &#8220;delims=&#8221; %%i in (&#8216;dir /ad /b /s&#8217;) do call :rd_dir_empty &#8220;%%i&#8221;<br />goto :eof
<p>rem ======= 删除空目录 =========<br />:rd_dir_empty<br />rd %1 2&gt;nul||goto :eof<br />set dir_route=%1<br />for /f &#8220;delims=&#8221; %%i in (%dir_route%) do (<br />&nbsp;&nbsp;&nbsp; set dir_route=&#8221;%%~dpi&#8221;<br />&nbsp;&nbsp;&nbsp; for /f &#8220;delims=&#8221; %%j in (&#8216;dir /ad /b &#8220;%%~dpi&#8221;&#8216;)do rd &#8220;%%~dpi%%j&#8221; 2&gt;nul||goto :eof<br />)<br />:: 把路径最后的\去掉，以便set route_deepest=&#8221;%%~dpi&#8221;能取到上一层路径<br />if &#8220;%dir_route:~-2,1%&#8221;==&#8221;\&#8221; set dir_route=&#8221;%dir_route:~1,-2%&#8221;<br />if /i not &#8220;%cd%&#8221;==%dir_route% call :rd_dir_empty %dir_route%<br />goto :eof
<p>将上述编写成一个批处理 del30.bat
<p>因为datafile目录本身是提供iis服务的。这样删除可能删除不掉。就再编写一个批处理
<p>rundel.bat
<p>rem ==停止iis服务
<p>net stop w3svc
<p>rem ==调用del30.bat 然后返回到此处&nbsp;
<p>call del30.bat
<p>rem==启动iis
<p>net start w3svc
<p>&nbsp;
<p>然后再编写任务计划，这个没什么好说的了。每天在凌晨3点执行。
<p>2）删除目录的命令rmdir， 在windows2003中取消了delete的删除目录功能，取代的是rmdir
<p>rmdir 两个参数&nbsp; /s&nbsp; 删除指定目录下所有的目录和文件&nbsp;
<p>/q&nbsp; 静默模式。
<p>3）管道符号敲回车，在命令中间，有一个第3方工具，这个工具，在运行结束之后，提示，按回车结束。如果不处理他，就会在批处理过程中卡住。-_-#&nbsp; 实验了一下，才发现原来在windows下，回车是CR 。。这个是在我最开始接触计算机的时候，教材上是这样写的。没有想到过了若干年后，才在实际的工作中应用到。真是。。。无语啊。
<p>type CR|第3方工具.exe&nbsp; 参数[1] 参数[2]
<p>type CR然后跟一个管道符，是表示将一个回车传递到第3方程序中去。这样在程序结束的时候，就会自动敲一个回车，来结束这个第3方工具。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jiangsi.com/archives/427/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

