为什么批处理文件打算将文件备份到启动文件夹,然后复制所有System32文件

时间:2018-11-15 19:22:13

标签: batch-file cmd startup xcopy

我经常使用AutoHotKey,并且希望在启动时通过更改执行所有脚本,所以我制作了一个批处理文件,将AutoHotKey文件夹中的所有内容备份到Windows启动文件夹中,并计划将其每天运行:

 xcopy ".\*" "C:\Users\%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup" /y

我将此文件放置在AutoHotKey目录中,并且在运行时它会自行拾起,因为我忘记了使用“。*。ahk”仅获取AutoHotKey文件。因此,现在我的启动文件夹中也有此批处理文件,该文件毫无意义但无害(我认为)。

几次重新启动后,我的计算机在启动时就陷入了麻烦,打开了大量文件并启动了许多不同的程序。我收到数千个“您无法打开.dll”错误。

我以为自己感染了病毒并以安全模式重启。我记得该脚本,并在重新安装Windows之前检查了我的启动文件夹,并在其中看到成千上万个文件,这些文件已被我删除。

作为一个实验,我多次重启计算机都没有问题。然后,将批处理文件放回启动文件夹中,然后我的计算机再次出现混乱。

我的问题是,为什么要从放置目录之外的任何内容复制所有内容?另外,为什么它仅在启动时引起此问题?我通常在启动目录中运行该文件,没有任何反应。

1 个答案:

答案 0 :(得分:1)

您已经在上面的评论中获得了所有好的建议。但是,让我给您更多的监督...

pause添加到脚本的底部。现在,双击运行脚本。

您会注意到cmd.exe已在其工作目录中启动,名为C:\Windows\System32,因此,您可以这样做:

xcopy ".\*" ...

您正在有效地从工作目录c:\windows\system32复制

因此,请这样做:

xcopy "C:\path\to\files\*" ....

您也可以只cd /d C:\path\to\files\,但是无论哪种方式,使用完整路径都是最佳解决方案,这意味着脚本可以放置在磁盘上的任何位置...或与此相关的任何磁盘上。

此外,正如 Compo 的注释中所述,在所有现代Windows版本中都有一个预设的AppData变量,您可以通过从cmd.exe运行来查看此变量:

echo %AppData%

因此,您应该只能以以下方式运行脚本:

xcopy "C:\path\to\files\*" "%AppData%\Microsoft\Windows\Start Menu\Programs\Startup" /y