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

Errormeldung und Ausgabe in Log-Datei

Frage Entwicklung Batch & Shell

Mitglied: 26741

26741 (Level 1)

11.03.2006, aktualisiert 20.03.2006, 7874 Aufrufe, 6 Kommentare

Hallo,

ich habe ein Batch-Script geschrieben, welches in der Firma automatisiert Dateien backuppen und sortieren soll.

Ich möchte aber gerne keine Ausgaben und Fehler auf der Konsole angezeigt haben. Bisher habe ich es nur geschafft, entweder die Fehler oder die Ausgaben zu unterdrücken bzw. in eine Logdatei zu schreiben.

Hier das Stück Code:
ECHO.
ECHO Verschiebe XY-Daten
MOVE "%path_xydata%\*.%xy_filetype%" "%save_path%\%save_xydata%"
2>> %save_path%\%logfile% || ECHO Eintraege im Logfile vorhanden
ECHO
>> %save_path%\%logfile%
ECHO -----DONE-----

Wie kann ich jetzt von dem MOVE auch noch die verschobenen Dateien ins Logfile verschieben, nicht nur Fehlermeldungen??

In diesem Beitrag ist das Problem ebenfalls angeschnitten und auch keine richtige Lösung, nur Workarounds gefunden worden: http://www.administrator.de/Batchdatei_-_Logschreiben_aber_trotzdem_Tex ...

Ich danke schonmal für jeden Tipp!!


Johannes
Mitglied: maneich
11.03.2006 um 17:15 Uhr
Hallo,

also zunächst mal, wenn du hinter/unter dem echo keine pause machst, kannst du das ja überhauptnicht lesen, da so diese Zeile zwar angezeigt wird aber in Millisekunden wieder verschwindet.

Also wenn du das auch lesen möchtest dann z.B. mit

for %%e in (echo pause) do %%e Verschiebe XY-Daten

Aber nun zum eigentlichen Problem.

Du hast Dateien im Verzeichnis %a% liegen und willst diese nach Verzeichnis %b% verschieben. Außerdem soll kein prompt angezeigt werden, sondern dieser soll in eine Log-Datei geschrieben werden. Außerdem sollen die verschobenen Dateien auch noch ins Logfile geschrieben werden. Ist das soweit richtig?

Nun, die Ausgabe vom Move ist doch
Verzeichnis\Datei => Verzeichnis [OK] wenn alles gut gelaufen ist und z.B.
%adresse%\dateixyz.txt kann nicht verschoben werden - Datei oder Verzeichnis nicht vorhanden
oder eine andere Fehlermeldung wenn ein Fehler aufgetreten ist

Außerdem gibt Move einen Errorlevel zurück
0 wenn OK und
größer 0 meist 1 wenn nicht OK

Somit hast du 2 Möglichkeiten zu bestimmen was ohne prompt passieren soll

1. move %a%\datei.txt %b%>nul
damit wird die Ausgabe ins nichts geleitet, man kann aber trotzdem über über die Abfrage

If errorlevel 1 (bedeutet errorlevel >= 1)

feststellen ob fehlerfrei oder nicht und das auch in eine Datei schreiben.

2. move %a%\datei.txt %b%>>logfile.txt
Damit steht, wie oben bereits ausgeführt der Vorgang in der Logfile und zwar egal ob verschieben OK oder nicht OK

Willst Du das gesamte Verzeichnis verschieben, geht das am einfachsten mit:

for /f "tokens=*" %%e in ('dir /s /b %a%') do move %%e %b%>>logfile.txt

damit steht auch jede einzelne Datei in Verzeichnis %a% in der Logfile, ob kopiert oder nicht.

In %a% und %b% stehen natürlich die Verzeichnisadressen von und nach.

MfG maneich
Bitte warten ..
Mitglied: 26741
11.03.2006 um 17:33 Uhr
hi,

also zunächst mal, wenn du hinter/unter
dem echo keine pause machst, kannst du das ja
überhauptnicht lesen, da so diese Zeile
zwar angezeigt wird aber in Millisekunden
wieder verschwindet.

keine Panik, das Script ist ja noch viel länger und hat mehr Funktionen. War nur ein Auszug daraus... ;)

for %%e in (echo pause) do %%e Verschiebe
XY-Daten

ich habe mich in den letzten Tagen in Batch-Programmierung mal wieder bisschen aufgefrischt und nachgelesen.
Ich frage mich aber, warum sämtliche Sachen mit for-Schleifen gelöst werden, die IMHO viel einfacher auch anders gelöst werden könnten...

Du hast Dateien im Verzeichnis %a% liegen
und willst diese nach Verzeichnis %b%
verschieben. Außerdem soll kein prompt
angezeigt werden, sondern dieser soll in eine
Log-Datei geschrieben werden. Außerdem
sollen die verschobenen Dateien auch noch
ins Logfile geschrieben werden. Ist das
soweit richtig?

richtig. Mein Script funktioniert auch einwandfrei.
Ich möchte nur die Ausgabe
Datei XY
Datei YY
Datei YX
"X Dateien verschoben"
sowie die Ausgabe "datei xyz kann nicht verschoben werden/existiert nicht/existiert schon" ins Logfile schreiben.
Also sowohl die Statusmeldungen, wie auch die Fehlermeldungen.

If errorlevel 1 (bedeutet errorlevel >=
1)
feststellen ob fehlerfrei oder nicht und das
auch in eine Datei schreiben.

bringt aber nix, da ich die Fehlermeldung nit mehr auslesen kann.

2. move %a%\datei.txt
%b%>>logfile.txt
Damit steht, wie oben bereits
ausgeführt der Vorgang in der Logfile
und zwar egal ob verschieben OK oder nicht
OK

das geht nit. Wenn ich es als 2>> pipe, sind nur Fehlermeldungen im Logfile. Wenn ich >> ohne Errorlevel verwende, sind nur Statusmeldungen im Logfile.

Willst Du das gesamte Verzeichnis
verschieben, geht das am einfachsten mit:
for /f "tokens=*" %%e in ('dir /s
/b %a%') do move %%e %b%>>logfile.txt

wieder so ein Beispiel. Vielleicht kannst du ja mal begründen, warum eine for-Schleife hier sinnvoller ist, wie das verzeichnis einfach nur mit move zu verschieben...
Vielleicht kannst du mir auch kurz die Funktion der Schleife erklären, vielleicht verstehe ich dann den Hintergrund...
In meinem Fall will ich aber nur die Files aus dem Verzeichnis verschieben.

Danke dir schonmal!


Johannes
Bitte warten ..
Mitglied: Schirrmeister
11.03.2006 um 18:35 Uhr
Du kannst die Fehlerausgabe in den normalen Ausgabestrom umleiten, und diesen dann in die Datei (oder umgekehrt).
Das Umleiten sieht dann etwa so aus:
01.
>> datei.txt 2>&1
Bitte warten ..
Mitglied: 26741
11.03.2006 um 18:47 Uhr
hi,

es funktioniert!

Werde es jetzt mal ausführlich testen, schätze aber, dass das war, was ich gesucht hab.

ciao


Johannes
Bitte warten ..
Mitglied: 18133
12.03.2006 um 18:13 Uhr
hi,

mal mir dir > datei.log probiert ?

Gruß
Bitte warten ..
Mitglied: 26741
20.03.2006 um 14:00 Uhr
also hier nochmal die korrekte Lösung:

MOVE "%path_xydata%\*.%xy_filetype%" "%save_path%\%save_xydata%"
%save_path%\%logfile% 2>&1

oder ein einfaches Beispiel:

ECHO Dieser Text kommt in die Date >> datei.txt 2>&1
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst PowerShell, Log Datei auslesen, bei Änderungen E-Mail senden (12)

Frage von swissbull zum Thema Batch & Shell ...

Netzwerkmanagement
gelöst Sophos UTM220 - Appliance CPU Auslastung LOG-Datei downloaden? (7)

Frage von 1410640014 zum Thema Netzwerkmanagement ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...