2016-06-21 64 views
0

我已经做了蝙蝠脚本如下为什么我的蝙蝠脚本删除自身,当我运行它

cd "D:\ACT\ACTBKUP" 
del /Q *.* 

FORFILES /P E:\ACT_Backups /M *.zip /D +1 /C "cmd /c del @D:\ACT\ACTBKUP" 

的脚本应该在删除一切“d:\ ACT \ ACTBKUP”,然后移动最新zip文件夹复制到E:\ ACT_Backups中的同一文件夹。当我从windows server 2012运行这个脚本时,它就消失了。

感谢

+3

哪里是脚本位于何处? – SomethingDark

+0

该脚本位于桌面上 –

+1

而Windows安装在C:\驱动器上,对吗? – SomethingDark

回答

1

为了切换到位于不同的驱动器上的目录,你需要使用cd /d,而不只是cd。如果你不这样做,目录不会改变。

当您通过双击脚本运行脚本时,批处理将当前目录视为脚本当前所在的目录。由于您没有使用/d选项和cd,因此您正在脚本所在的目录上运行del /Q *.*

为了解决这个问题,你有两个选择:

cd /d "D:\ACT\ACTBKUP" 
del /Q *.* 

del /Q "D:\ACT\ACTBKUP" 


有一个在 forfiles没有选项得到的只是最近的文件; /D +1将返回所有文件的上次修改日期为今天或以后。为了得到最新的文件,并没有别的,你将需要一个 for /f循环:

rem /b returns just the file name and /o:d sorts the files by date 
rem Since newest_file gets set for each .zip file in the directory, 
rem the last file set will be the newest 
for /f "delims=" %%A in ('dir /b /o:d E:\ACT_Backups\*.zip') do set newest_file=%%A 
copy %newest_file% D:\ACT\ACTBKUP 
+0

好的,这是我的最新版本。 'del/QD:\ ACT \ ACTBKUP FORFILES/P“E:\ ACT_Backups”/ M * .zip/D +1/C“cmd copy @files D:\ ACT \ ACTBKUP”'但forfiles命令无法应对文件。我做错了什么? –

+1

阅读forfiles帮助输出。没有@文件。 – ths

+1

@DennisHertzler - 另外,如果你只想要最近的文件,你需要调整你的代码到我所展示的内容。 – SomethingDark

相关问题