错误地删除自己的脚本

时间:2016-04-14 18:54:47

标签: batch-file delete-file

此批处理脚本应映射到PC并使用日期和时间重命名该文件夹中的文件。时间戳并将它们复制到另一台PC上的另一个位置。然后它应该删除该源文件夹中的所有文件,除了名为“LBBS.log”的文件。除删除部分外,一切正常。它没有删除文件夹中的任何内容,实际上它正在删除批处理文件本身。当我运行它时,它复制得很好,但它会删除自己。有人可以告诉我我需要改变什么来工作。我错过了什么?它在Windows 7环境中。提前谢谢。

net use x: \\MTLLBBS023\C$
set "stamp=%date:~4,2%%date:~7,2%%date:~10,4%%time:~0,2%%time:~3,2%%time:~6,2%"
set "source=MTLLBBS023"
xcopy /S /E /I x:\logs E:\Data\Logs\MTLLBBS023\%source%-%stamp%.*
cd x:\Logs
for %%i in (*) do if not %%i == LBBS.log del %%i
net use x: /delete

1 个答案:

答案 0 :(得分:2)

问题是您的脚本和目标目录位于不同的驱动器上。

当您cd到另一个目录时,如果您尝试在不使用/d选项的情况下移动到另一个驱动器,该命令将失败。

而不是cd x:\logs,您应该说cd /d x:\logs - 这将更改驱动器和目录。

或者,代替net usenet use delete命令,您只需pushd \\MTLLBBS023\C$转到网络驱动器(这也会自动创建临时网络驱动器),然后{{1在脚本的末尾离开目录并删除映射的驱动器。这样,您根本不需要popd