用于删除文件并将文件复制到多个目录的Windows脚本

时间:2013-10-21 08:55:13

标签: windows batch-file

情景:

大约有150个目录都具有非常相似的路径名,但该路径中的一个文件夹在每个条目之间有所不同。以下示例

d:\TSProfiles\coetzeed.TEST.V2\Desktop\
d:\TSProfiles\ronaldb.TEST.V2\Desktop\
d:\TSProfiles\mcondaldc.TEST.V2\Desktop\

我想在所有这些目录上执行以下操作,但不知何故在每个条目中考虑了这些不同的文件夹名称,而无需将所有这些目录添加到脚本中。

del d:\TSProfiles\coetzeed.TEST.V2\Desktop\accounts.exe   (deletes the old accounts.exe)
Copy d:\newdesktop\accounts.exe  d:\TSProfiles\coetzeed.TEST.V2\Desktop\  (copies the new accounts.exe to the destination folder

2 个答案:

答案 0 :(得分:2)

一行的命令提示中执行此操作:

for /f "tokens=1" %a in ('dir d:\TSProfiles\* /ad /b ') do 
    echo copy /Y d:\newdesktop\accounts.exe  "d:\tsprofiles\%a\Desktop"

我输入了一个echo,这样你就可以检查命令是否有效,如果你满意的话就把它删掉。

命令dir / ad / b基本上只吐出foldernames(/ ad)而没有任何欺骗(/ b代表或'裸')

没有必要为此script。它只是直接从命令提示符运行。如果您想在脚本中使用此功能,请不要忘记将单个%替换为可变a的双倍%%,因此%a变为%%a

答案 1 :(得分:0)

@echo off
pushd "d:\TSProfiles\"
for /f "delims=" %%F in ('dir /b /s /a:-d "*accounts.exe"') do (
 del "%%~F" /F /Q
 copy "d:\newdesktop\accounts.exe" "%%~dpF" /Y

)
popd