Два пакетных файла не будут работать вместе, в чем проблема?

2

У меня есть файл с именем 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
Даниил
источник
2
start.batпереопределяет встроенную startкоманду. Назовите свой пакетный файл как-нибудь еще.
DavidPostill
Я попытался переименовать файл в qstart.bat, но случилось то же самое. Мне пришлось перезапустить, и позже, когда я получил доступ к C: \ Users, файл fix.bat действительно был перенесен туда, но там также был qstart.bat, что указывало на то, что проверка IF в fix.bat не сработала.
Даниэль

Ответы:

0

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 ^ | ^ | эхо не удалось

joeking
источник