Dois arquivos em lote não funcionarão juntos, onde está o problema?

3

Eu tenho um arquivo chamado fix.bat no diretório F: \, que preciso mover para C: \ Users. Por uma boa razão, eu decidi que deveria codificar um arquivo dentro do fix.bat, que seria criado quando o fix.bat fosse lançado, e moveria o fix.bat do diretório F: \ para C: \ Users, a correção de inicialização .bat, e no processo de tudo isso, crie algumas pastas em C: \ Users.

Agora, no início do arquivo fix.bat, é feita uma verificação para determinar se o fix.bat já está em C: \ Users. Se estiver, o start.bat não será feito, mas o fix.bat continuará com sua tarefa. Se não estiver, o start.bat é feito e move o fix.bat para C: \ Users. Pelo menos essa é a ideia.

Por algum motivo, no entanto, não funcionará. O que acontece, é que um loop infinito de janelas CMD se abre e eu tenho que reiniciar o computador.

Aqui está a parte relevante do código 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
    
por Daniel 05.10.2016 / 03:11

1 resposta

0

1: Faça com que o FIX.bat exclua o arquivo Start.bat antes de escrevê-lo --- pois ele continua anexando a ele, assim fica mais e mais longo. Provavelmente é por isso que você está vendo isso acontecer várias vezes.

2: renomeie "start.bat" para outra coisa, para evitar qualquer confusão.

3: Em vez de "call start.bat", simplesmente "start.bat" porque você quer garantir que o fix.bat não seja mantido aberto pelo CMD, e você não quer continuar a rodá-lo de qualquer maneira.

4: no start.bat, altere     mova fix.bat C: \ users para     mova o fix.bat C: \ users || eco MOVE FAILED

O "||" operador significa "Se o movimento falhou, faça o eco"

Você tem que escapar do | personagens:     echo move fix.bat C: \ usuários > > qstart.bat ^ | ^ | eco MOVE FAILED

    
por 23.06.2017 / 21:38