Почему пакетный файл предназначен для резервного копирования файлов в папку «Автозагрузка» Копировать все файлы System32 - PullRequest
0 голосов
/ 15 ноября 2018

Я часто использую AutoHotKey и хотел бы, чтобы все мои скрипты запускались при запуске с моими изменениями, поэтому я сделал пакетный файл для резервного копирования всего из папки AutoHotKey в папку автозагрузки Windows и запланировал его ежедневную работу:

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

Я поместил этот файл в свой каталог AutoHotKey, и когда он запустился, он поднялся сам, так как я забыл использовать «. *. Ahk», чтобы получать только файлы AutoHotKey. Так что теперь у меня есть этот командный файл в папке автозагрузки, который бессмыслен, но безвреден (так я думал).

После того, как пара внезапно перезагружается, при запуске компьютер теряет работоспособность, открывает кучу файлов и запускает кучу разных программ. Я получил тысячи ошибок "Вы не можете открыть .dll".

Я думал, что у меня есть вирус и перезагрузился в безопасном режиме. Я запомнил этот скрипт и проверил папку автозагрузки перед переустановкой Windows и увидел там тысячи файлов, которые я удалил.

В качестве эксперимента я пару раз перезагружал свой компьютер без проблем. Затем я поместил командный файл обратно в папку автозагрузки, и мой компьютер снова вышел из строя.

У меня вопрос: зачем копировать все из чего-либо, кроме каталога, в котором он находится? Кроме того, почему это вызывает только эту проблему при запуске? Я нормально запустил файл в каталоге автозагрузки и ничего не произошло.

1 Ответ

0 голосов
/ 16 ноября 2018

Вы получили все полезные советы уже в комментариях выше.Но позвольте мне дать вам еще немного упущения ...

добавить pause в конец вашего сценария.Теперь запустите сценарий, дважды щелкнув по нему.

Вы заметите, что cmd.exe запустилось в его рабочем каталоге, будучи C:\Windows\System32 Итак, вы делаете:

xcopy ".\*" ...

Вы эффективно копируете из рабочего каталога c:\windows\system32

Так что вместо этого сделайте:

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

Вы также можете просто cd /d C:\path\to\files\, но в любом случае использование полного пути является лучшим решением, то естьсценарий может быть помещен в любое место на диске ... или любом другом диске.

Кроме того, как уже упоминалось в комментарии Compo , во всех современных моделях есть предустановленная переменная AppData.Версии Windows, вы можете увидеть это, запустив cmd.exe:

echo %AppData%

Так что вы должны просто иметь возможность запускать свой скрипт как:

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