she*_*ard 3 windows batch-file
我想写一个.BAT文件,将C:\ WINNT\Temp的所有子目录(名称与掩码匹配)移动到H:\ SOMEOTHERPLACE.
所以如果我的面具是ABC*那么目录:
C:\WINNT\Temp\ABC1
C:\WINNT\Temp\ABC2
C:\WINNT\Temp\ABC3
Run Code Online (Sandbox Code Playgroud)
应该搬到
H:\SOMEOTHERPLACE
Run Code Online (Sandbox Code Playgroud)
其他一切(包括文件,而不是与掩码匹配的目录)不应该.我确实想要移动它们而不是复制它们.
谁能指出我正确的方向?
好的,我已经弄清楚了.如果您编写包含单行的movedirs.bat文件
for /d %%X in (%1) do move %%X %2\%%~nX
Run Code Online (Sandbox Code Playgroud)
然后运行它(参数1是我要移动的目录的掩码,参数2是我希望将目录移动到的目录)
C:\>movedirs.bat C:\WINNT\Temp\ABC* H:\SOMEOTHERPLACE\
Run Code Online (Sandbox Code Playgroud)
它产生我想要的效果.
'for'上的/ d参数确保只处理目录.%% X变量上的'~n'修饰符表示原始子目录名称(而不是整个路径)用作第二个命令行参数中的目标.
只是为了后人调查这个,我做了类似于xcopy的事情,但后来我不得不参与删除源代码,所以为了我的目的,移动效果更好,但是对于记录,这里包含xcopy的相同想法.
for /d %%X in (%1) do xcopy %%X %2\%%~nX /E /I
Run Code Online (Sandbox Code Playgroud)
要使用以及不使用扩展名处理目录,例如上面的命令"C:\ MyDir*.MyExt"将需要一个组合(文件名+扩展名)修饰符"~nx":
for /d %%W in (%1) do xcopy %%W %2\%%~nxW /E /F /R /Y /I
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7498 次 |
| 最近记录: |