У меня есть файл с именем fix.bat в каталоге F: \, который мне нужно переместить в C: \ Users. По уважительной причине я решил, что мне нужно закодировать файл в fix.bat, который будет создан при запуске fix.bat, и переместить fix.bat из каталога F: \ в C: \ Users, запустить fix .bat, и в процессе всего этого создайте несколько папок в C: \ Users.
Теперь, в самом начале файла fix.bat, выполняется проверка, чтобы определить, находится ли fix.bat в C: \ Users. Если это так, то start.bat не создан, но fix.bat продолжает свою задачу. Если это не так, start.bat создается и перемещает fix.bat в C: \ Users. По крайней мере, это идея.
Однако по некоторым причинам это не будет работать. Что происходит, так это то, что открывается бесконечный цикл CMD-окон, и мне приходится перезагружать компьютер.
Вот соответствующая часть кода fix.bat:
@echo off
if %cd% == C:\Users goto z
if not %cd% == C:\Users goto x
:x
echo pushd c:\users >>start.bat
echo md results-main >>start.bat
echo cd results-main >>start.bat
echo md results-e >>start.bat
echo md results-p >>start.bat
echo md results-s >>start.bat
echo md results-x >>start.bat
echo pushd %cd% >>start.bat
echo move fix.bat c:\users >>start.bat
echo pushd c:\users >>start.bat
echo start fix.bat >>start.bat
call start.bat
exit
:z
insert code here
источник
start.bat
переопределяет встроеннуюstart
команду. Назовите свой пакетный файл как-нибудь еще.Ответы:
1. Сделайте так, чтобы FIX.bat удалил Start.bat перед записью в него - так как он продолжает добавляться к нему, чтобы он становился все длиннее и длиннее. Вероятно, поэтому вы видите, что это снова и снова.
2: Переименуйте «start.bat» во что-то другое, чтобы избежать путаницы.
3: Вместо «call start.bat», просто введите «start.bat», потому что вы хотите убедиться, что fix.bat не удерживается открытым CMD, и вы не хотите продолжать его запуск в любом случае.
4: В start.bat измените перемещение fix.bat C: \ users на перемещение fix.bat C: \ users || эхо не удалось
"||" Оператор означает «Если перемещение не удалось, сделайте эхо»
Вы должны избежать | символы: echo move fix.bat C: \ users >> qstart.bat ^ | ^ | эхо не удалось
источник