Je veux créer un Filewatcher en batch-file:Filewatcher à décompressez, exécutez et déplacer des fichiers par lots fichier
montre pour le fichier dans dossierA (.zip) → décompressez à FolderB (avec le même nom) → et déclenchez un fichier batch → faites de même pour plus de fichiers .zip entrants.
j'ai vérifié les questions liées à cela dans StackOverflow mais, j'ai besoin de plus d'aide
:STARTPROCESS
CD /D %ROOT_DIR%
FOR /F "tokens=1-2 delims=." %%G in ('dir *.zip /b') do
(
REM unzip file
%SEVENZIP_PATH%\7z.exe x "%ROOT_DIR%" -o%UNZIP_FOLDER% -y >> %LOG%
echo %%G -- unzip complete
REM run batch1
:BATCH1
REM check ERROR from batch1 log --> i have a problem from here nothing below works
findstr /M "ERROR" %UNZIP_FOLDER%\%%G\Logs\*.log
If %ERRORLEVEL%==0 echo Error Found
move /Y "%UNZIP_FOLDER%\%%G" "%Folder1% >> %LOG%
goto STARTPROCESS
else
(
echo %%G Batch1 OK
goto BATCH2
)
REM run batch2
:BATCH2
REM check ERROR from batch2 log
findstr /M "Total Count : 0" %UNZIP_FOLDER%\%%G\Data\*_Output.log
If %ERRORLEVEL%==0 echo %%G Batch2 OK
goto STARTPROCESS
else
(
echo ERROR
move /Y "%UNZIP_FOLDER%\%%G\fileA.xml" "%UNZIP_FOLDER%\bin >> %LOG%
%SEVENZIP_PATH%\7z.exe a "%UNZIP_FOLDER%\%G%" -o%ZIP_FOLDER% -y >>%LOG%
)
)
timeout 60
goto STARTPROCESS
cmd /k
cela a fonctionné.! mais j'ai trouvé un autre problème: quand je passe %% G de la boucle principale à la sous-routine (elle passe OK, mais manque le "\") et donc j'obtiens une erreur. comme ceci 'findstr/M" KO "% UNZIP_FOLDER% \% 1 \ Logs \% 1.log' devient 'd: \ LocalData \ \ Desktop \ décompresser" testfile \ Logs "testfile.log' –
PrimeSuspect
la partie manquante était de ajouter double \\, j'ai ajouté \\ au% 1 et cela a fonctionné comme prévu. – PrimeSuspect