为什么我的bat脚本在运行时会自行删除

时间:2016-06-21 17:50:02

标签: batch-file windows-server-2012-r2

我制作了一个蝙蝠脚本如下

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运行此脚本时,它就会消失。

感谢

1 个答案:

答案 0 :(得分: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