View Full Version : No Chiusura dopo esecuzione in Batch
brubaker
26-09-2014, 10:05
Salva ragazzi, spero cher qualcuno mi aiuti...
Ho questa riga di comando:
@Echo Off & SETLOCAL
echo.
SET "StartFolder="
echo.
FOR /r "%StartFolder%" %%i IN (*) DO call:doit "%%~i"
GOTO:EOF
:doit
SET "fname=%~nx1"
SETLOCAL ENABLEDELAYEDEXPANSION
SET "fsize=!$%fname%!"
IF DEFINED $!fname! (
ENDLOCAL
IF "%fsize%"=="%~z1" DEL "%~1"
) ELSE (
ENDLOCAL
SET "$%~nx1=%~z1"
)
GOTO:EOF
Una volta eseguita la funzione il problema e che si chiude il Batch, come faccio a continuare senza che si chiudi eseguendo altre funzioni in serie..????
Tipo:
@Echo Off
echo pulisci bla bla bla
echo.
pause
SET "StartFolder="
echo.
FOR /r "%StartFolder%" %%i IN (*) DO call:doit "%%~i"
GOTO:EOF
:doit
SET "fname=%~nx1"
SETLOCAL ENABLEDELAYEDEXPANSION
SET "fsize=!$%fname%!"
IF DEFINED $!fname! (
ENDLOCAL
IF "%fsize%"=="%~z1" DEL "%~1"
) ELSE (
ENDLOCAL
SET "$%~nx1=%~z1"
)
GOTO:EOF
echo.
SET /P ANSWER=Do you want to continue (Y/N)?
echo You chose: %ANSWER%
if /i {%ANSWER%}=={y} (goto :yes)
if /i {%ANSWER%}=={yes} (goto :yes)
goto :no
:yes
echo You pressed yes!
:no
echo You pressed no!
START /HIGH /W "" "ciao\arrivederci.exe" etc etc
echo.
echo ciao
echo.
echo arrivederci
echo.
exit
Non se se ho reso l'idea..Grazie.:) :confused:
x_Master_x
26-09-2014, 15:57
Qual'è lo scopo che vuoi raggiungere con quel batch?
brubaker
26-09-2014, 16:53
Qual'è lo scopo che vuoi raggiungere con quel batch?
Nessuno scopo mi serve solo che non si chiuda la finestra dos, dopo la prima funzione effettuata, una volta che cancella i file duplicati, il progamma dos (Paperino*.bat) deve continuare a funzionare, eseguendo ulteriori funzioni successive, tipo richiamo di un software.exe, altri messaggi etc etc etc etc...precedentemente già compilati....:)
x_Master_x
26-09-2014, 17:11
Cancella i GOTO:EOF
brubaker
26-09-2014, 18:30
Gia' provato se tolgo i GOTO:EOF ed inserisco la funzione nel comando batch NON funziona,ma la schermata rimane aperta, se invece creo il comando con solo la funzione, anche senza i GOTO:EOF..Funziona.
Mha.:O :( :muro:
x_Master_x
26-09-2014, 21:25
DOIT ti serve per cancellare i duplicati da una cartella e relative sottodirectory, giusto?
brubaker
27-09-2014, 07:32
DOIT ti serve per cancellare i duplicati da una cartella e relative sottodirectory, giusto?
YES:D
x_Master_x
27-09-2014, 08:26
Prova con questo:
: x_Master_x
@ECHO OFF
Setlocal enabledelayedexpansion
Del "Temp_List.txt" 2>nul
Set InitialDir=C:\Percorso\Cartella
If Not Exist "%InitialDir%" GOTO ERROR_QUIT
For /r "%InitialDir%" %%H in (*) do >>"TempList.txt" echo %%~nxH
Set FILENAME=FOUND
Set CHECK=FOUND
For /f "tokens=*" %%I in ('Sort "TempList.txt"') do if "%%I"=="!FILENAME!" (
If "!CHECK!"=="FOUND" for /f "tokens=*" %%J in ('dir /s /b "%InitialDir%\%%I"') do echo DEL "%%J"
Set CHECK=NO_FOUND
) else (
Set FILENAME=%%I
Set CHECK=FOUND
)
Del "TempList.txt" 2>nul
GOTO NEXT_SUB
:ERROR_QUIT
echo La directory "%InitialDir%" non esiste
Pause
Exit
:NEXT_SUB
echo.
echo OPERAZIONE COMPLETATA
Pause
Exit
P.S. Nessun file verrà cancellato, c'è solo una verifica del nome e nient'altro e tutti i file con duplicati saranno mostrati a display. Puoi completarlo da solo per quello che vuoi fare
brubaker
27-09-2014, 11:35
Grazie Gentilissimo, senti mi aiuti a completarlo dato che sei piu' in gamba di me, mi servirebbe il modo da incollarci il percorso della cartella da controllare ed eliminare i file duplicati, non mi interessa la lista del controllo file in *.txt.
tipo questo finito che uso..il percorso in rosso:
SET /p "StartFolder="
echo.
FOR /r "%StartFolder%" %%i IN (*) DO call:doit "%%~i"
GOTO:EOF
:doit
SET "fname=%~nx1"
SETLOCAL ENABLEDELAYEDEXPANSION
SET "fsize=!$%fname%!"
IF DEFINED $!fname! (
ENDLOCAL
IF "%fsize%"=="%~z1" DEL "%~1"
) ELSE (
ENDLOCAL
SET "$%~nx1=%~z1"
)
GOTO:EOF
x_Master_x
27-09-2014, 13:38
Dalle tue parole ipotizzo che di batch non sei un grande esperto ma questa è la sezione "Programmazione", è un luogo dove si impara e non si ha tutto bello e fatto ;)
Ho editato il post precedente per quanto riguarda la path iniziale e spero di averlo reso più comprensibile ma ho lasciato comunque in sospeso per te la questione di quali file cancellare e quali no visto che a schermo ti verrano mostrati tutti.
P.S. Per cortesia edita dal tuo post il quote al mio messaggio con il codice, di solito i codici non si quotano per eventuali correzioni etc.
brubaker
27-09-2014, 15:08
Non si tratta di essere piu' esperto o meno esperto, il problema che sto compilando già un casino di cose (gratis per una comunità) e mi serviva inserire questo file batch, in altre molteplici funzioni, ecco perche ti avevo chiesto il favore di completarlo tu.
Ma ti ringrazio gia tantissimo per cio' che hai fatto, CMQ modificato opportunamente, la tua funzione cancella i file con lo stesso nome, non tenendo presente della grandezza del file in sè, il mio script invece tiene presente anche la grandezza del file..se in due subfolder differenti abbiamo giovanni da 12kb e giovanni ta 13kb giovanni non li tocca, allo stesso modo se abbiamo giovanni12Kb in due cartelle differenti ed un giovanni da 13kb in una terza cartella, il progamma cancella solo un giovanni, quello da 12kb in più ...non so se ho reso l'idea..
CMQ non voglio disturbarti piu' di tanto..se non me lo puoi completare.. nel modo descritto, fa lo stesso...userò una seconda alternativa.
GRAZIE!!!!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.