Ankündigung

Einklappen
Keine Ankündigung bisher.

Batch Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Batch Problem

    Hi Leute

    hab seit jahren nix mehr mit Batchfiles gemacht und stehe jetzt vor einem problem

    Ich will remote auf mehreren PC einen Ordner erstellen:
    if not exist \\PC\C$\temp mkdir \\PC\C$\temp

    und dann was kopieren:
    xcopy "C:\Datei" \\PC\C$\Temp\ > Report_PC.txt /y

    Jetzt muss ich das aber auf ca. 50 pc machen. Da ich mich 50 mal die Syntaxe haben will, dachte ich mir mit Set und If und usw. könnte man doch eine Liste der PC Namen setzen die er dann nach und nach in einer schleife abbarbeitet... geht sowas, ich dachte ich hätte sowas schonmal gesehn?!?

    Greezli HAMSTER

  • #2
    so klappts

    Set var=pc1
    Set var=pc2


    :do
    if not exist \\%var%\C$\temp mkdir \\%var%\C$\temp
    xcopy "datei" \\%var%\C$\Temp\ > Report_%var%.txt /y
    next
    :while

    Kommentar


    • #3
      ^^'nee klappt doch nicht, sorry. stehe wieder am anfang, kriegs nicht hin das er mir die 2te variable hohlen geht ;_;

      Kommentar


      • #4
        Re: Batch Problem

        Hallo Hamster,

        Original geschrieben von HAMSTER

        Ich will remote auf mehreren PC einen Ordner erstellen:
        if not exist \\PC\C$\temp mkdir \\PC\C$\temp

        und dann was kopieren:
        xcopy "C:\Datei" \\PC\C$\Temp\ > Report_PC.txt /y
        ich hatte genau die gleiche Aufgabenstellung:

        ----------- test.cmd ---------------
        FOR /F "eol=; tokens=* delims=," %%a in (ip-adressen.txt) do call :distri %%a
        goto :EOF

        :distri
        @echo off
        net use \\%1\ipc$
        md \\%1\c$\test_dir
        xcopy org_files \\%1\c$\test_dir /T /e
        net use \\%1 /delete
        REM Nachfolgendes goto :EOF funktioniert als "Next", d.h. springt in die Schleife zurück
        goto :EOF
        ----------------------------------------

        In der Datei ip-adressen.txt steht auf jeder Zeile je eine IP-Adresse der Zielmaschinen.

        Viel Erfolg und einen schönen Gruss
        Beat
        CNE 6.5, LPIC-1, Novell CLP,
        Master of Advanced Studies in Information Security

        Kommentar


        • #5
          Hallöle

          Ist mir war noch nicht klar, was du genau machen willst, aber vielleicht hilft dir ne FOR Schleife

          For /L %%I IN (1,1,3) DO Echo %%I%

          Oder dann via vbscript?

          ' vari.vbs
          dim vari(3)
          vari(0) = "foo"
          vari(1) = "gugus"
          vari(2) = "gaga"

          FOR I= 0 TO 2
          wscript.echo vari(i)

          Next


          gruss
          moll
          > SELECT * FROM users WHERE clue > 0
          0 rows returned

          Kommentar


          • #6
            Cool danke Ihr beide! Ich schau es mir gleich mal an!

            Greezli HAMSTER

            Kommentar


            • #7
              kleine zwischenfrage, wird der batch beim login ausgelöst oder wie gedenkst du diesen zu starten ?


              und: es geht locker auch ohne das ganz FOR/DO - Glump, bedenke, dass vielleicht später einmal auch andere den batch noch verstehen sollen, und dass sind je länger je weniger ...

              falls ich es heute noch zeitlich schaffe sende ich dir ein beispiel.
              kleiner tipp bis dahin: %COMPUTERNAME%, vergiss set var = pc1 (das müsste ja schon auf den pc's vorhanden/gesetzt sein, nicht erst im batch gesetzt werden, weil dann ist jeder client "pc1", bezw. den letzten wert bei mehreren gleiche variablen-name hintereinander)

              so long
              Zuletzt geändert von Deine Mutter; 29.01.2007, 10:01.
              Diese Schlampe kommt mir nicht in mein Haus, hörst Du Norman !
              Mutter

              *** VACANCY *** BATES MOTEL ***

              Kommentar


              • #8
                Original geschrieben von Deine Mutter
                und: es geht locker auch ohne das ganz FOR/DO - Glump,
                hoppla, etwas ungeschickt formuliert von mir in der eile.
                ich wollte natürlich die lösungsvorschläge der beiden anderen nicht abwertig behandeln. sorry, falls der eindruck bereits entstanden sein sollte.

                gruss
                Diese Schlampe kommt mir nicht in mein Haus, hörst Du Norman !
                Mutter

                *** VACANCY *** BATES MOTEL ***

                Kommentar


                • #9
                  @deine mutter

                  ja das mit den beispiel batch währe ich sehr dankbar! man weiss nie wenn mans wieder braucht!
                  mit %COMPUTERNAME% hab ich versucht aber das problem ist, ich starte das gelegetnlich ab meinem Notebook, und es soll auf vordefinierte computer gewisse File kopiert werden. darum die Computernamen in der Variable.

                  Kommentar


                  • #10
                    Original geschrieben von Deine Mutter
                    hoppla, etwas ungeschickt formuliert von mir in der eile.
                    ich wollte natürlich die lösungsvorschläge der beiden anderen nicht abwertig behandeln. sorry, falls der eindruck bereits entstanden sein sollte.

                    gruss
                    *grins*.. also ich bin jetzt stinkesauer und verkrümmle mich in der Ecke ;-) ..

                    schon oke.. Haben ja ne Elefantenhaut als Admins.. ;-)

                    cheerio
                    moll
                    > SELECT * FROM users WHERE clue > 0
                    0 rows returned

                    Kommentar


                    • #11
                      Re: Re: Batch Problem

                      Original geschrieben von beat_lu
                      Hallo Hamster,



                      ich hatte genau die gleiche Aufgabenstellung:

                      ----------- test.cmd ---------------
                      FOR /F "eol=; tokens=* delims=," %%a in (ip-adressen.txt) do call :distri %%a
                      goto :EOF

                      :distri
                      @echo off
                      net use \\%1\ipc$
                      md \\%1\c$\test_dir
                      xcopy org_files \\%1\c$\test_dir /T /e
                      net use \\%1 /delete
                      REM Nachfolgendes goto :EOF funktioniert als "Next", d.h. springt in die Schleife zurück
                      goto :EOF
                      ----------------------------------------

                      In der Datei ip-adressen.txt steht auf jeder Zeile je eine IP-Adresse der Zielmaschinen.

                      Viel Erfolg und einen schönen Gruss
                      Beat
                      Cool, es klappt wunderbar!!

                      Vielen Dank!!

                      Kommentar


                      • #12
                        Re: Re: Re: Batch Problem

                        Hallo Hamster,

                        Original geschrieben von HAMSTER
                        Cool, es klappt wunderbar!!

                        Vielen Dank!!
                        bitte schön...

                        Habe lange genug daran gebastelt, damit auch andere davon profitieren können.

                        Gruss
                        Beat
                        CNE 6.5, LPIC-1, Novell CLP,
                        Master of Advanced Studies in Information Security

                        Kommentar


                        • #13
                          Echt klasse!! Danke! Muss jetzt schon sagen ich hätte das nicht so hinbeckommen!

                          Vorallem ist mir diesezeige noch etwas ein rätzehl wie genau sie funktioniert:
                          FOR /F "eol=; tokens=* delims=," %%a in (ip-adressen.txt) do call :distri %%a
                          goto :EOF

                          ich verstehe zwar das er auf der datei die ip/cimputername holt und mit dem for sie einzeln ausliest und so, das ist mir klar, aber der aufbau dieser forschleife ist verstehe ich nicht. was bedeutet dieses token und delims?

                          Kommentar


                          • #14
                            AW: Batch Problem

                            Zitat von HAMSTER Beitrag anzeigen
                            was bedeutet dieses token und delims?
                            1) im cmd-fenster --> for /?

                            2) ich hab mal sowas gemacht um remote auf allen Rechnern den "uninstall key" aus der Registry auszulesen und in eine txt-datei zu schreiben. da wir die hostnamen durchnummeriert haben, wird mit einem trick einfach eine variable hochgezählt. Ein Ping prüft zuerst, ob der Rechner überhaupt eingeschaltet ist oder nicht. Das Script braucht keine Datei mit IP-Adressen oder Hostnamen sondern zählt einfach hoch, entweder für Hostnamen die mit "NT" anfangen oder mit "CAD".

                            Code:
                            @echo off
                            
                            if [%1]==[] goto missing
                            if [%2]==[] goto missing
                            
                            if /I %1==CAD (
                             set H=1
                             set T=1
                             set D=1
                            ) else (
                             set H=0
                             set T=0
                             set D=0
                            )
                            
                            :START
                            if [%H%]==[] set H=0
                            if [%T%]==[] set T=0
                            if [%D%]==[] set D=0
                            :DIGITS
                            if %D%==9 goto TENS
                            if %D%==8 set D=9
                            if %D%==7 set D=8
                            if %D%==6 set D=7
                            if %D%==5 set D=6
                            if %D%==4 set D=5
                            if %D%==3 set D=4
                            if %D%==2 set D=3
                            if %D%==1 set D=2
                            if %D%==0 set D=1
                            goto DONE
                            :TENS
                            set D=0
                            if %T%==9 goto HUNDREDS
                            if %T%==8 set T=9
                            if %T%==7 set T=8
                            if %T%==6 set T=7
                            if %T%==5 set T=6
                            if %T%==4 set T=5
                            if %T%==3 set T=4
                            if %T%==2 set T=3
                            if %T%==1 set T=2
                            if %T%==0 set T=1
                            goto DONE
                            :HUNDREDS
                            set T=0
                            if %H%==9 set H=0
                            if %H%==8 set H=9
                            if %H%==7 set H=8
                            if %H%==6 set H=7
                            if %H%==5 set H=6
                            if %H%==4 set H=5
                            if %H%==3 set H=4
                            if %H%==2 set H=3
                            if %H%==1 set H=2
                            if %H%==0 set H=1
                            goto DONE
                            :DONE
                            
                            echo Checking.....%1%H%%T%%D%!
                            
                            if exist \\nt402\test\uninstall_key\%1%H%%T%%D%.txt goto alreadydone
                            set deadpc=\\nt402\test\uninstall_key\%1%H%%T%%D%_notResponding.txt
                            
                            ping %1%H%%T%%D% -n 1 | find "Antwort"
                            if not errorlevel 1 goto responding
                             echo                      ....not responding.
                             echo %1%H%%T%%D% > %deadpc%
                            goto cont
                            
                            
                            :responding
                            if exist %deadpc% del %deadpc%
                            
                             \\nt402\test\REG QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" /s \\%1%H%%T%%D% | find /I "DisplayName" > \\nt402\test\uninstall_key\%1%H%%T%%D%.txt
                            
                            goto cont
                            
                            :alreadydone
                            echo                      already done......skipping!
                            goto cont
                            
                            :cont
                            
                            if %H%%T%%D%==%2 goto END
                            goto START
                            
                            :missing
                            echo.
                            echo ===============================================================================
                            echo Use the following Syntax: %0 "pc-type" [i.e. NT, CAD] "number of pcs"
                            echo ===============================================================================
                            echo.
                            
                            :END
                            MCSE 2003, MCSA 2003, MCDST, MCTS (SCCM 2012)
                            70-270, 70-290, 70-291, 70-271, 70-272, 70-293, 70-294, 70-299, 70-297, 70-243

                            Kommentar


                            • #15
                              AW: Batch Problem

                              Hioer ist auch noch viel erklärt, mit vielen Beispielen: http://www.robvanderwoude.com/

                              Kommentar

                              Lädt...
                              X