2013-06-14 16 views
23

Sto cercando di scrivere script batch su creare una cartella se non esiste già. Seguendo gli esempi online, sotto c'è il mio script.Come impedire la chiusura della finestra batch quando si verifica un errore?

Il problema è; il primo pause funziona, quindi probabilmente a causa di un errore di sintassi la finestra si chiude anche prima del secondo al numero pause, quindi non è possibile stabilire quale parte del mio script sia errata.

Qualcuno potrebbe mostrarmi come impedire la chiusura della finestra in modo che possa vedere cosa c'è sulla finestra?

@echo off 

:copy theme images over 
:designer 
echo copying theme images over... 
pause 
if not exist "%K2DIR%\K2 SmartForms Runtime\Styles\Themes\Sharepoint 2013\rich_text" 
(
    md "%K2DIR%\K2 SmartForms Runtime\Styles\Themes\Sharepoint 2013\rich_text333" 
) 

pause 
+7

Perché non metti un 'pause' prima di' md '? Inoltre, non limitarti a eseguire il file .bat facendolo doppio clic: apri 'cmd' e chiama il tuo pip da lì. Nessuna finestra per chiuderla! – Sebastian

+5

Per quanto riguarda l'errore di sintassi - il tuo '(' è posizionato male, deve trovarsi sulla stessa riga dell'istruzione IF con uno spazio precedente. – dbenham

+0

Grazie per aver segnalato l'errore :) –

risposta

19

È necessario passare l'opzione/K a CMD, oppure aprire una finestra di comando ed eseguire il batch dalla riga di comando.

+0

Ah !! buon punto! Mi sento così stupido .. –

+0

Anche il meglio di noi dimentica. Soprattutto se non hai usato una tecnologia per un po 'di tempo. – AMissico

1

Ho registrato lo schermo (bandicam) per quando non ho potuto leggere il messaggio di errore, e quindi ho potuto riprodurlo; Suppongo che questo sia utile soprattutto se hai già un software sul tuo computer.

+0

questo ha funzionato alla grande per me! Era un messaggio fugace e non avevo il controllo sull'invocazione dello script: questa era l'opzione migliore. –

21

Si potrebbe mettere questa riga all'inizio del file batch:

if not defined in_subprocess (cmd /k set in_subprocess=y ^& %0 %*) & exit) 

Cosa questa linea non fa altro; la prima volta che lo esegui, si riavvia da solo in un sottoprocesso che non si chiude dopo aver completato l'esecuzione del file batch.

+0

Questo non sembra funzionare in Windows 7. Genera processi secondari ricorsivi fino a quando qualcosa non va a buon fine. Qualcuno ha qualche correzione? – porcoesphino

+1

@porcoesphino Puoi provare 'se non definito in_subprocess (cmd/k set in_subprocess = y^&% 0% *) & exit)' –

+0

Oh wow. Lo spazio prima della parentesi era il problema. Funziona anche nelle versioni precedenti? Se è così, probabilmente vale la pena di aggiornare la tua risposta. Grazie. – porcoesphino

0

Premere start e digitare cmd e premere enter, verrà avviato un prompt dei comandi. Basta trascinare e rilasciare ciò che è necessario eseguire (il tuo script python, .exe ...) nelle finestre di cmd e premere invio. (Se hai bisogno di eseguire il cmd come amministratore, trova il cmd nel menu di avvio, fai clic con il tasto destro su di esso, scegli run as admin) (Funziona su Windows 7)

Problemi correlati