chkdsk
Goto Top

Ausgabe in Batch anpassen - Datei kopieren

Hallo Zusammen,

ich habe folgendes Batchskript, welches mir eine Datei auf eine bestimmte Anzahl Computer kopiert. Die Computer bezieht er aus einer .txt Datei mit IP Adressen. Das funktioniert auch soweit top.
Jetzt möchte ich das Skript gerne so anpassen, das er die PCs überspringt, auf denen die Datei schon vorhanden ist, mit der Ausgabe im cmd Fenster, welche IP Adressen er übersprungen hat und auf welche er die Datei kopiert hat. Leider komme ich da nicht weiter im Moment.

@echo off

 call :isAdmin

 if %errorlevel% == 0 (
    goto :run
 ) else (
    echo Requesting administrative privileges...
    goto :UACPrompt
 )

 exit /b

 :isAdmin
    fsutil dirty query %systemdrive% >nul
 exit /b

 :run

set frompath= "\\serverxyz\skriptxyz"  
for /f "eol= tokens=1" %%i in (%userprofile%\desktop\ips.txt) do copy /v /y %frompath% "%%i\C$\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUP"  
pause

exit /b

 :UACPrompt
   echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"  
   echo UAC.ShellExecute "cmd.exe", "/c %~s0 %~1", "", "runas", 1 >> "%temp%\getadmin.vbs"  

   "%temp%\getadmin.vbs"  
   del "%temp%\getadmin.vbs"  
  exit /B`

Content-Key: 549707

Url: https://administrator.de/contentid/549707

Printed on: April 19, 2024 at 15:04 o'clock

Member: Kraemer
Kraemer Feb 20, 2020 at 13:04:42 (UTC)
Goto Top
Moin,

Zitat von @chkdsk:
Leider komme ich da nicht weiter im Moment.
also entweder du hast hier den falschen Code gepostet, oder aber du bist damit noch nicht einmal angefangen. Was davon stimmt?

Gruß
Member: Metzger-MCP
Metzger-MCP Feb 20, 2020 updated at 14:47:16 (UTC)
Goto Top
BATCH - SCHNIPSEL nicht komplett

@echo off

REM \\192.168.1.1\ IP des zuzugreifenden Clients
REM \ps\ Freigabename
REM beta.txt Dateiname

IF EXIST \\192.168.1.1\ps\beta.txt ( goto ok ) ELSE ( goto nok )

:OK

REM ECHO " OKAY "
REM ECHO " GGF ein CALL BATCH mit Befehlen "
REM ECHO " DATEIEINTRAGUNGEN UND CO ( z.b. Echo " TEXT " >> c:\tempLOG.TXT ) "

GOTO end

:NOK

REM ECHO " NICHT OKAY "
REM ECHO " DATEIEINTRAGUNGEN UND KOPIEREN ( z.b. Echo " TEXT " >> c:\tempLOG.TXT und Copy x nach y ) "
REM ECHO " GGF ein CALL BATCH mit Befehlen "

goto end

:end
Member: chkdsk
chkdsk Feb 20, 2020 at 14:43:30 (UTC)
Goto Top
Das kopieren ohne überschreiben, so dachte ich zumindest, wollte ich wie folgt lösen. Funktioniert aber nicht face-sad "Das System kann die angegebene Datei nicht finden."
set frompath= "\\serverxyz\skriptxyz"  
for /f "eol= tokens=1" %%i in (%userprofile%\desktop\ips.txt) do copy IF NOT EXIST /v /y %frompath% "%%i\C$\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUP"  
pause

Bei meiner 2ten Frage bzgl. der Ausgabe, auf welchen PC die Datei kopiert wurde. bzw auf welchen nicht, habe ich gar keine Idee. Es erscheint halt nur "Die Datei wurde kopiert".
Member: Metzger-MCP
Metzger-MCP Feb 20, 2020 updated at 15:12:08 (UTC)
Goto Top
BATCHDATEI

@echo off

IF EXIST \\192.168.1.%1\ps\beta.txt ( goto ok ) ELSE ( goto nok )

:OK

ECHO " OKAY DATEI VORHANDEN "
ECHO " IP x.x.x.%1 besitzt die Datei " >> c:\temp\LOG.txt
GOTO end

:nok

ECHO " OKAY DATEI VORHANDEN "
copy \\192.168.1.%1\ps\betb.txt \\192.168.1.%1\ps\beta.txt
ECHO " Zur IP x.x.x.%1 wurde die Datei nun kopiert " >> c:\temp\LOG.txt

goto end

:end

Bissel verfeinert. Die Pfade und IP's und Datein und CO müssen angepasst werden. Dies ist lediglich ein Muster
Wenn die Batchdatei mit einer Zahl aufgerufen wird, z.b. [ MEINEBATCH.bat 56 ] würde bei mir die IP 192.168.1.56 angesprochen.

MFG Uwe
Member: chkdsk
chkdsk Feb 21, 2020 at 08:42:15 (UTC)
Goto Top
Moin,
wie binde ich denn jetzt dort meine vorhandene txt Datei ein?
Member: Metzger-MCP
Metzger-MCP Feb 21, 2020 at 09:35:16 (UTC)
Goto Top
Da keiner ausser dir, den genauen Inhalt deiner IPS.txt kennt und keiner weis, was du eigentlich mit %%i übergibts, kann auch keiner dir eine funktionierende Gesamtlösung bieten. Ich vermute mal \\ip oder \\computername.

Daher hab ich auch meine Hilfestellung sehr allgemein gehalten und als eigeneständige Batch angeboten und die wiederum mit dem Hinweis auf Anpassung.

Als aufruf [ Meinebatch.bat 56 ] setzt sie genau dein Wunsch mit meinen vorgaben um.

Gerne kann man dir auch eine komplette Lösung bieten, aber dann brauch man auch alle Informationen die du hast.

Wenn du deine FOR Schleife hinten anpasst, und meine - von dir - angepasste Batch aufrufst, ist die Lösung da.

MFG Uwe