Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Problem Batch Ausgabe in File

Frage Entwicklung Batch & Shell

Mitglied: schilling

schilling (Level 1) - Jetzt verbinden

07.11.2008, aktualisiert 19:11 Uhr, 3427 Aufrufe, 2 Kommentare

Guten Tag,

ich versuche mich gerade an Batch Skripting und habe schon viele hilfreiche Tips von hier, ohne die ich nie so weit gekommen wäre. Nun fehlt mir noch ein Baustein zum Ziel und ich hoffe ihr könnt mir dabei helfen. Worum gehts?

Ich hole hier ein bisschen weiter aus, damit ihr auch nachvollziehen könnt, was ich mache: Es gibt ein Netzlaufwerk. Darauf soll mittels Robocopy im Mirror Mode ein Abbild eines lokalen Ordners erstellt werden. Die Namen der Ordner, welche Lokal und auf dem Netzlaufwerk existieren, werden vom Admin vorgegeben. Um nun einen neuen Ordner inkl. dazugehörigem Batch Script zum automatischen Kopieren mittels Robocopy zu erstellen, gibt es folgendes Script. Dieses liest den Firmennamen ein und erstellt einen Ordner inkl. Script:

Das Script lautet:

01.
@set /p namevar=Bitte Firmennamen eingeben: 
02.
@echo Firmenordner und Upload Skript werden erstellt. Einen Moment bitte... 
03.
@mkdir "%namevar%" 
04.
@echo @echo off>"%namevar%\rc_upload_%namevar%.bat" 
05.
@echo REM === ATTENTION === ATTENTION ===>>"%namevar%\rc_upload_%namevar%.bat" 
06.
@echo REM ===============================>>"%namevar%\rc_upload_%namevar%.bat" 
07.
@echo REM === DO NOT MODIFY THIS FILE ===>>"%namevar%\rc_upload_%namevar%.bat" 
08.
@echo REM ==== DATEI NICHT VERÄNDERN ====>>"%namevar%\rc_upload_%namevar%.bat" 
09.
@echo REM ===============================>>"%namevar%\rc_upload_%namevar%.bat" 
10.
@echo REM ==== ACHTUNG ==== ACHTUNG =====>>"%namevar%\rc_upload_%namevar%.bat" 
11.
@echo REM ===============================>>"%namevar%\rc_upload_%namevar%.bat" 
12.
@echo for /f "delims=" %%%i in ('echo %%cd%%') do set "Verzeichnispfad=%%%~ni">>"%namevar%\rc_upload_%namevar%.bat" 
13.
@echo if "%%Verzeichnispfad%%"=="%namevar%" goto Verzeichnisstimmt>>"%namevar%\rc_upload_%namevar%.bat" 
14.
@echo :Verzeichnisstimmtnicht>>"%namevar%\rc_upload_%namevar%.bat" 
15.
@echo robocopy.exe %namevar% "\\<pfad.zu.netzlaufwerk>\%namevar%\%%lun%%" /TEE /LOG:log_%namevar%.txt /MIR /Z /XD *privat* /XF rc_upload_%namevar%.bat>>"%namevar%\rc_upload_%namevar%.bat" 
16.
@echo goto :eof>>"%namevar%\rc_upload_%namevar%.bat" 
17.
@echo :Verzeichnisstimmt>>"%namevar%\rc_upload_%namevar%.bat" 
18.
@echo robocopy.exe ../%namevar% "\\<pfad.zu.netzlaufwerk>\%namevar%\%%lun%%" /TEE /LOG:../log_%namevar%.txt /MIR /Z /XD *privat* /XF rc_upload_%namevar%.bat>>"%namevar%\rc_upload_%namevar%.bat" 
19.
@echo REM === ATTENTION === ATTENTION ===>>"%namevar%\rc_upload_%namevar%.bat"  
20.
@echo REM ===============================>>"%namevar%\rc_upload_%namevar%.bat" 
21.
@echo REM === DO NOT MODIFY THIS FILE ===>>"%namevar%\rc_upload_%namevar%.bat"  
22.
@echo REM ==== DATEI NICHT VERÄNDERN ====>>"%namevar%\rc_upload_%namevar%.bat"  
23.
@echo REM ===============================>>"%namevar%\rc_upload_%namevar%.bat"  
24.
@echo REM ==== ACHTUNG ==== ACHTUNG =====>>"%namevar%\rc_upload_%namevar%.bat" 
25.
@echo REM ===============================>>"%namevar%\rc_upload_%namevar%.bat"
Wenn ich das Script ausführe und als Kundennamen "Testkunde3" eingebe, lautet die Ausgabe:

01.
@echo off 
02.
REM === ATTENTION === ATTENTION === 
03.
REM =============================== 
04.
REM === DO NOT MODIFY THIS FILE === 
05.
REM ==== DATEI NICHT VERÄNDERN ==== 
06.
REM =============================== 
07.
REM ==== ACHTUNG ==== ACHTUNG ===== 
08.
REM =============================== 
09.
if "%Verzeichnispfad%"=="Testkunde3" goto Verzeichnisstimmt 
10.
:Verzeichnisstimmtnicht 
11.
robocopy.exe Testkunde3 "\\<pfad.zu.netzlaufwerk>\Testkunde3\%lun%" /TEE /LOG:log_Testkunde3.txt /MIR /Z /XD *privat* /XF rc_upload_Testkunde3.bat 
12.
goto :eof 
13.
:Verzeichnisstimmt 
14.
robocopy.exe ../Testkunde3 "\\<pfad.zu.netzlaufwerk>\Testkunde3\%lun%" /TEE /LOG:../log_Testkunde3.txt /MIR /Z /XD *privat* /XF rc_upload_Testkunde3.bat 
15.
REM === ATTENTION === ATTENTION ===  
16.
REM =============================== 
17.
REM === DO NOT MODIFY THIS FILE ===  
18.
REM ==== DATEI NICHT VERÄNDERN ====  
19.
REM ===============================  
20.
REM ==== ACHTUNG ==== ACHTUNG ===== 
21.
REM ===============================
Leider entspricht die Ausgabe nicht dem gewünschten Ergebnis, denn folgende Zeile fehlt in der Ausgabe zw. Zeile 8 und 9 vollständig:
01.
for /f "delims=" %%i in ('echo %cd%') do set "Verzeichnispfad=%%~ni"
Die Ausgabe auf der Kommandozeile sieht so aus:

01.
T:\>make_kunde_v3.bat 
02.
Bitte Firmennamen eingeben:Testkunde3 
03.
Firmenordner und Upload Skript werden erstellt. Einen Moment bitte... 
04.
for /f "delims=" %T:\%~ni">>"Testkunde3\rc_upload_Testkunde3.bat" 
05.
T:\>
So weit ich es sehe, werden gewisse Variablen in dieser Zeile ersetzt, obwohl ich sie mittels zusätzlichem "%" eingetragen habe. Ist das überhaupt die korrekte Vorgehensweise, wenn ein Batch Script bestimmte Variablen nicht ersetzen soll, sie mit jeweils doppeltem "%" davor und danach zu kennzeichnen? Bei den restlichen Zeilen funktioniert es wunderbar.

Für Hilfe wäre ich sehr dankbar.

Mit freundlichen Grüßen,
Daniel
Mitglied: bastla
07.11.2008 um 13:40 Uhr
Hallo schilling und willkommen als schreibendes Mitglied !

Ist das überhaupt die korrekte Vorgehensweise, wenn ein Batch Script bestimmte Variablen nicht ersetzen soll, sie mit jeweils doppeltem "%" davor und danach zu kennzeichnen?
Grundsätzlich ja, nur musst Du das auch konsequent umsetzen und jedes "%"-Zeichen verdoppeln:
@echo for /f "delims=" %%%%i in ('echo %%cd%%') do set "Verzeichnispfad=%%%%~ni">>"%namevar%\rc_upload_%namevar%.bat"
Noch eine Anmerkung: Für Dein obiges Vorhaben würde ich eher zu folgender Schreibweise greifen:
01.
@echo off & setlocal 
02.
set /p namevar=Bitte Firmennamen eingeben: 
03.
echo Firmenordner und Upload Skript werden erstellt. Einen Moment bitte... 
04.
mkdir "%namevar%" 
05.
 
06.
 >"%namevar%\rc_upload_%namevar%.bat" echo @echo off 
07.
>>"%namevar%\rc_upload_%namevar%.bat" echo REM === ATTENTION === ATTENTION === 
08.
>>"%namevar%\rc_upload_%namevar%.bat" echo REM =============================== 
09.
...
Vorteil: Die unterschiedliche Länge der zu schreibenden Batchbefehle stört (mich) viel weniger, wenn sie am Ende der Zeile auftritt - so wird der zu erstellende Batch leichter lesbar (zumindest im Editor ).

Wenn Du dann noch den Pfad der Batchdatei in eine Variable packst, könnte das so aussehen:
01.
@echo off & setlocal 
02.
set /p namevar=Bitte Firmennamen eingeben: 
03.
echo Firmenordner und Upload Skript werden erstellt. Einen Moment bitte... 
04.
mkdir "%namevar%" 
05.
set B="%namevar%\rc_upload_%namevar%.bat" 
06.
 
07.
 >%B% echo @echo off 
08.
>>%B% echo REM === ATTENTION === ATTENTION === 
09.
>>%B% echo REM =============================== 
10.
...
Grüße
bastla
Bitte warten ..
Mitglied: schilling
07.11.2008 um 19:11 Uhr
Vielen Dank, bastla.

Ich werde deinen Tip gleich berücksichtigen. Klingt sehr plausibel, sämtliche % mit einem zweiten % zu versehen. Wenn man halt so viel Zeit vor dem eigenen Skript verbringt, sieht man oft den Wald vor lauter Bäumen nicht mehr. Danke auch für die zusätzlichen Tips.

Sollte es klappen, werde ich den Thread als gelöst markieren, ansonsten melde ich mich nochmal.

Liebe Grüße und ein schönes Wochenende,
Daniel
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch dir und Html Link ausgabe
gelöst Frage von Pilger83Batch & Shell7 Kommentare

Hallo zusammen, folgendes Problem, ich möchte eine Batch mit folgender function dir Ordner plus Unterordner durchsuchen ausgabe ohne Kopfzeile ...

Batch & Shell
Batch (Win7): Kombinierte Ausgabe mit echo?
gelöst Frage von Ben.Blake.79Batch & Shell1 Kommentar

Hallo, ist es eigentlich möglich, mit echo einen Text gleichzeitig auf dem Bildschirm und in eine Datei auszugeben? Oder ...

Batch & Shell
Batch Archivierung und löschen von Files
Frage von PeronasBatch & Shell1 Kommentar

Hallo zusammen, ich habe mal eine Frage zu einem Batch-File welches ich zum archivieren von Files benötige. Und zwar ...

Batch & Shell
Batch File zum Auslesen einer Datei
gelöst Frage von Marcel1989Batch & Shell9 Kommentare

Hallo, Ich scheibe momentan ein Anmeldescript als batch mit dem Aufruf von VBS dateien. Hierfür haben wir bereits gruppen ...

Neue Wissensbeiträge
Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 17 StundenApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 22 StundenWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 22 StundenWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 1 TagInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server18 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

Windows XP
Windows XP Aktivieren geht nicht
Frage von tetikmiroWindows XP13 Kommentare

Hallo Ich habe einen Windows XP mit einen vCenter Converter umgezogen auf eine ESXI. Soweit funktioniert dies auch ohne ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
gelöst Frage von prodriveNetzwerkmanagement12 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...