Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 3380 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 ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch ausgabe zeilenweise stat spaltenweise ausgeben (4)

Frage von sugram zum Thema Batch & Shell ...

Batch & Shell
gelöst Grosses Variablen Problem ( Batch) (30)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst ( Batch ) Open File or Folder Dialog (5)

Frage von clragon zum Thema Batch & Shell ...

Windows 10
Batch: Copy file.txt Lokaler Drucker (1)

Frage von fluluk zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...