2017-12-14 2 views
0

start.batWie in mehreren Verzeichnissen suchen

@echo off 
CALL bat.bat "C:\Users\admin\Documents\test 2,C:\Users\admin\Documents\test 1" "*.xml *.txt *.html" "D:\Work\bat\batLog.txt" 

bat.bat

for %%G in (%1) do (
echo %%~G 
    pushd "%%G" 
    If Exist "%%G" ( 
    for /R %%H in ("%2") do ( 
if %%~zH LSS %3 (
>>"%4" (
     echo %%~H 
     echo %%~tH 
for /f "tokens=* delims=," %%i in ('type "%%~H"') do (
echo %%i 
))) popd))) 

pause 
exit/b 

warum es zum nächsten Verzeichnis geht nicht? Echo only test 2

+0

Ich würde sehr empfehlen, dass Sie eine detaillierte Erklärung geben, was Sie versuchen, Ihre 'bat.bat' Code zu erreichen und aktualisieren So können wir sehen, wie die anderen Befehlszeilenargumente verwendet werden. – Squashman

+0

@Squashman done – Vaaassaa

+0

Sie fehlen ein Befehlszeilenargument% 3. Der 'PUSHD' sollte nach dem' IF EXIST' stehen. Da Ihre Befehlszeilenargumente zitiert werden, sollten Sie die Anführungszeichen mit der Tilde entfernen. '% ~ 2'. Und Sie brauchen keine Anführungszeichen um das '% 2' herum. – Squashman

Antwort

1

Dies ist jetzt eine vollständige Neufassung mit Ihrem neuen Code. Dies sollte Ihnen näher bringen, was Sie tun möchten. Hoffentlich habe ich alle anderen Fehler mit Ihrem Programm behoben. Ich werfe absichtlich meinen Code ein, damit ich sehen kann, wo ein Codeblock beginnt und endet. Viel einfacher zu sehen und zu verstehen, wie der Code funktioniert.

start.bat

@echo off 
call bat.bat "C:\Users\admin\Documents\test 2,C:\Users\admin\Documents\test 1" "*.xml *.txt *.html" "20000" "D:\Work\bat\batLog.txt" 

bat.bat

@echo off 
REM %1 = List of Folders 
REM %2 = List of file masks 
REM %3 = File Size for comparison 
REM %4 = Log File 

set "folders=%1" 
set "folders=%folders:,=","%" 

for %%G in (%folders%) do (
    echo %%~G 
    If Exist "%%~G" ( 
     pushd "%%~G" 
     for /R %%H in (%~2) do ( 
      if %%~zH LSS %~3 (
       >>"%~4" (
        echo %%~H 
        echo %%~tH 
        for /f "tokens=* delims=," %%I in ('type "%%~H"') do (
         echo %%~I 
        ) 
       ) 
      ) 
     ) 
     popd 
    ) 
) 

pause 
exit/b 
+0

Tatsache ist, dass nach den Pfaden ich noch mehr Parameter, die für die Arbeit benötigt werden, übergeben. Und das Verzeichnis ist nicht immer zwei kann mehr oder weniger sein. rufen Sie bat.bat auf "C: \ Benutzer \ admin \ Dokumente \ test 2, C: \ Benutzer \ admin \ Dokumente \ test 1" "* .xml * .txt * .html" "D: \ Work \ bat \ batLog.txt " – Vaaassaa

+0

@Vaaassaa, ich beantwortete Ihre Frage, wie sie vorgestellt wurde. Sie können keine verallgemeinerte Frage stellen und eine Antwort erwarten, die für alles funktioniert, was Sie darauf werfen. Bearbeiten Sie Ihre Frage und aktualisieren Sie sie mit den GENAUEN technischen Spezifikationen, die Sie brauchen! – Squashman

+0

ok ty aber das ist nicht was ich brauche, soryy – Vaaassaa

Verwandte Themen