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

BATCH - Ausgabe in zwei Dateien gleichzeitig

Frage Entwicklung Batch & Shell

Mitglied: yakazaa

yakazaa (Level 1) - Jetzt verbinden

17.10.2012 um 12:01 Uhr, 2211 Aufrufe, 9 Kommentare

Hallo,

ganz simples Problem, knifflige Lösung ?

Ich habe ein längeres Skript, in dem ich diverse Aktionen ausführe, teilweise ergeben sich daraus so genannte "Statusmeldungen", jedoch immer "Log-Meldungen".

Beispiel:
SET STATUS=TEST.TXT
SET LOG=TEST.LOG

ECHO Skript startet...>%STATUS%
ECHO Skript startet...>%LOG%

DIR /w >>%LOG%

ECHO Skript beendet.>>%STATUS%
ECHO Skript beendet.>>%LOG%

Jetzt sind ja jeweils die ECHO Zeilen gleich, kann man das nicht zusammenfassen ?

Meine Idee wäre dahingehend:

ECHO Skript startet...>>%STATUS% >>&%LOG%

Klappt aber nicht - und ich weiß nicht warum
Mitglied: yakazaa
17.10.2012 um 12:13 Uhr
Jain, nicht so ganz:

Ich führe unter anderem auch eine Acronis Wiederherstellung durch; natürlich ungerne 2 Mal, nur um sie dann nochmal im Log stehen zu haben (wäre soch bei der FOR Schleifen Lösung so, nicht ?

SNIP:
"for /f [...] %%i in [...] do echo %%i>>Die_Datei.txt && echo %%i"
lt. http://www.administrator.de/forum/Ausgabe-in-Datei-erm%C3%B6glichen-abe ...

Das mit dem "Tee" verstehe ich nicht...
Bitte warten ..
Mitglied: 68162
17.10.2012 um 12:32 Uhr
Zitat von yakazaa:

Das mit dem "Tee" verstehe ich nicht...

Stichworte: 'UnxUtils' und weiter führend 'tee.exe'

MfG, FM_81
Bitte warten ..
Mitglied: Lochkartenstanzer
17.10.2012 um 12:36 Uhr
Zitat von yakazaa:
Das mit dem "Tee" verstehe ich nicht...

Das mit dem Tee ist doch schon in den Thread von mir erklärt worden. einfach mal diese Liste duchschauen und schon bist Du schlauer.


lks
Bitte warten ..
Mitglied: andimue
17.10.2012 um 12:46 Uhr
Mach dir doch eine kleine Unterprozedur in dein Skript rein, dass die beiden ECHOs macht, also in etwa so:

01.
... 
02.
call :SUB_ECHO  "Diese Zeile ausgeben" 
03.
.. 
04.
call :SUB_ECHO "und diese Zeile auch" 
05.
... 
06.
 
07.
 
08.
:SUB_ECHO 
09.
:: Para 1 =  auszugebende Zeile 
10.
ECHO %1>>%STATUS% 
11.
ECHO %1>>%LOG% 
12.
goto :EOF
Bitte warten ..
Mitglied: yakazaa
17.10.2012, aktualisiert um 13:08 Uhr
Ich mache es jetzt doch etwas anders, ein Arbeitskollege gab mir gerade den Tipp:
ECHO Hallo >%STATUS% >>%LOG%

Zumindest unter Windows 7 klappt das erstmal, wie es sich hinterher im BatrPE verhält, wird man sehen..
Bitte warten ..
Mitglied: pieh-ejdsch
17.10.2012 um 15:03 Uhr
moin,

ECHO Hallo >%STATUS% >>%LOG%
Das geht so gar nicht!
Du kannst ein Verbratenes Hänchen Äähm Verwendetes Handle in dem gleichen Befehl nicht nochmal an etwas Umleiten oder Dublizieren.
Deine Datei Status wird immer leer bleiben.
Das wäre ja einfach
echo Testen obs nicht geht. >datei
echo Hallo >datei >con
type Datei
Zumal es dafür etliche Würgarounds gibt. (siehe Tee)

Ich plädiere dazu, bei einem sehr Langen Batch am Anfang eine Variable zu setzen:
01.
set X= 1^>tmp.t ^&^&type tmp.t ^>^>status ^&^&type tmp.t ^>^>log ^&^&type tmp.t 
02.
 
03.
echo Hallo test.%X%
Das ist ein guter Kompromiss zwischen Schreibkram; Performance und Batchlänge.

Gruß Phil
Bitte warten ..
Mitglied: pieh-ejdsch
19.10.2012, aktualisiert 20.10.2012
moin yakazaa,

hast Du noch keine Möglichkeit gefunden eine Variante von den vieln Angebotenen zu nutzen?

Wenn Du unbedingt mehrere Umleitungen in mehrere Dateien haben möchtest, dann eventuell so:
01.
@set prompt=$g$s 
02.
setlocal 
03.
 
04.
 rem Diese Variable(n) Dubliziert(en) eine Ausgabe in Handle 1; und Handle 3-9 
05.
 rem Handle 1 wird immer ausgegeben. 
06.
 rem Handle 3-9 kann bei Bedarf in eine Datei Umgeleitet werden, 
07.
 rem diese werden jedoch nicht extra ausgegeben. 
08.
 rem Hanlde 3 kann Aber immer Ausgegeben werden. 
09.
 
10.
set X1+3=^|@for /f "delims=" %%_ in ('findstr /n "^" ') do @set "line=%%_" ^&for %%: in ("@" ">&3") do @cmd /von /c "(%%~: echo(!Line:*:=!)"  
11.
 
12.
set X13=^|@for /f "delims=" %%_ in ('findstr /n "^" ') do @set "line=%%_" ^&for %%: in ("@" ">&3 3>nul") do @for /f "tokens=1,2" %%# in ("%%~:") do @cmd /von /c "%%$ (%%# echo(!Line:*:=!)" 
13.
 
14.
set X1345=^|for /f "delims=" %%_ in ('findstr /n "^" ') do @set "line=%%_" ^&for %%: in ("@" ">&3 3>nul" ">&4 4>nul" ">&5 5>nul") do @for /f "tokens=1,2" %%# in ("%%~:") do @cmd /von /c "(%%# echo(!Line:*:=!) %%$" 
15.
 
16.
set X1-9=^|for /f "delims=" %%_ in ('findstr /n "^" ') do @set "line=%%_" ^&for %%: in ("@" ">&3 3>nul" ">&4 4>nul" ">&5 5>nul" ">&6 6>nul" ">&7 7>nul" ">&8 8>nul" ">&9 9>nul") do @for /f "tokens=1,2" %%# in ("%%~:") do @cmd /von /c "(%%# echo(!Line:*:=!) %%$" 
17.
 
18.
 rem Dateien loeschen 
19.
del Datei? 
20.
echo on 
21.
rem echo Test doppelt Handle 1+3%X1+3% 
22.
@echo off 
23.
 
24.
echo Test doppelt Handle 1 ^^^& 3%X1+3% 
25.
 
26.
echo Test Handle 1-5 ^(3-5^) stumm%X1345% 
27.
 
28.
 rem Schreibarbeit ist es dafür Trotz alledem 
29.
echo Test Handle 1-9 ^(3-9^) stumm, 7in Datei7%X1-9% 7^^^>^^^>Datei7 
30.
 
31.
echo Handling Handle Test 1 3%x13% 1^^^>^^^>Datei1 3^^^>^^^>Datei3 
32.
 
33.
echo Handling Handle Test 1+3%X1+3% 1^^^>^^^>Datei1 3^^^>^^^>Datei3 
34.
echo Test Handle 1 3-5%x1345% 3^^^>^^^>Datei3 4^^^>^^^>Datei4 5^^^>^^^>Datei5 
35.
echo ------ 
36.
find /n /v "" Datei? 
37.
echo on 
38.
rem dir %X13% 3^^^>^^^> Ausgabe.txt 
39.
@echo off 
40.
echo Leite Handle 3 in Ausgabe.txt 
41.
del Ausgabe.txt xcopy.log 
42.
dir %X13% 3^^^>^^^> Ausgabe.txt 
43.
 
44.
echo on 
45.
rem xcopy 2>&1 %X1+3% ^^^>^^^>xcopy.log 
46.
@echo off 
47.
echo Leite Handle 1 in Log 
48.
xcopy 2>&1 %X1+3% ^^^>^^^>xcopy.log 
49.
echo ------ 
50.
type Ausgabe.txt xcopy.log  
51.
  
52.
pause 
Durch die Komplizierte Schreibweise der Umleitung ist die Handhabung nicht so einfach, und die Umleitung dauert auch sehr lange.

Da diese Teesorten immer erst die Ausgabe geben, wenn der erste Befehl der Kette durch ist, ist es mit der Temporären Datei immer noch am Schnellsten.
Diese auf die Handles umzubiegen geht so:
01.
@set prompt=$g$s 
02.
setlocal 
03.
 
04.
set Tee=^|(findstr "^" ^>"%temp%\tee.txt" ^&type "%temp%\tee.txt" ^&type "%temp%\tee.txt" ^>^&3) 
05.
 
06.
set TEE8=^|3^>nul 4^>nul 5^>nul 6^>nul 7^>nul 8^>nul 9^>nul (findstr "^" ^>"%temp%\tee.txt" ^&type "%temp%\tee.txt" ^&type "%temp%\tee.txt" ^>^&3 ^&type "%temp%\tee.txt" ^>^&4 ^&type "%temp%\tee.txt" ^>^&5 ^&type "%temp%\tee.txt" ^>^&6 ^&type "%temp%\tee.txt" ^>^&7 ^&type "%temp%\tee.txt" ^>^&8 ^&type "%temp%\tee.txt" ^>^&9) 
07.
 
08.
rem echo Test doppelt Handle 1+3%Tee% 
09.
@echo off 
10.
 
11.
echo Test doppelt Handle 1 ^& 3%Tee% 
12.
echo on 
13.
rem dir %tee% 3> Ausgabe.txt 
14.
@echo off 
15.
echo Leite Handle 3 in Ausgabe.txt 
16.
dir %tee% 3> Ausgabe.txt 
17.
 
18.
echo on 
19.
rem xcopy 2>&1 %tee% >xcopy.log 
20.
@echo off 
21.
echo Leite Handle 1 in Log 
22.
xcopy 2>&1 %tee% >xcopy.log 
23.
echo ------ 
24.
type Ausgabe.txt xcopy.log  
25.
  
26.
pause 
27.
 rem die Beiden Variablen TEE TEE8 / Anweisungen stehen nun in der CMD-Line zur Verfügung 
28.
cmd /k prompt $g$S
Setz doch bitte den Betrag auf gelöst. Danke

Gruß Phil
Bitte warten ..
Mitglied: yakazaa
19.10.2012, aktualisiert um 15:02 Uhr
Hallo zusammen,

hatte die Anfrage eigentlich verworfen, denn es ist ehrlich gesagt ein bisschen zuviel Aufwand, für das was ich erreichen wollte..

Ich schreibe jetzt einfach in Temp-Dateien und schreibe es im Anschluss in eine zweite Datei:

X:\Programs\Acronis\TrueImageCMD.EXE /deploy /filename:%IMAGEPATH%\%IMAGENAME%.TIB /harddisk:1 /target_harddisk:1>>%STATUS%
TYPE %STATUS%>>%LOG%

Tut genau das, was ich brauche...

DANKE euch allen für die Mühe,
Gruß Dominik
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch vergleich von zwei dateien
gelöst Frage von realdavegerBatch & Shell6 Kommentare

Hallo, nach Jahrelangem zugucken, habe ich jetzt schlussendlich eine Frage welche ich selbst stelle. Ich versuche 2 zeiten aus ...

Batch & Shell
Zwei Werte vergleichen in einer Batch-Datei
gelöst Frage von PatrickHeissi10Batch & Shell1 Kommentar

Ich möchte die beiden Variablen %eins% und %zwei% vergleichen haben diese den gleichen Wert haben-> goto einszwei Danke

Batch & Shell
Zwei Dateien per Batch zusammenfügen
gelöst Frage von EisbrecherinBatch & Shell8 Kommentare

Hallo zusammen! Ich stehe vor folgendem Problem: Aus einem Programm erhalte ich zwei Logdateien. In der einen Datei steht, ...

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 ...

Neue Wissensbeiträge
Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 39 MinutenSicherheit2 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Sicherheit

Meltdown und Spectre: Die machen uns alle was vor

Information von Frank vor 1 StundeSicherheit9 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Microsoft

Update KB4073578 für AMD CPU (Spectre und Meltdown Lücke)

Information von sabines vor 7 StundenMicrosoft

Wegen Problemen (BOSD, nicht startende PCs) wurde das Update KB4056897 und KB4056894 für AMD CPUs zurückgezogen. Dieses Update KB4073578 ...

Mac OS X

MacOS wo ist die Tilde ?

Tipp von Alchimedes vor 20 StundenMac OS X4 Kommentare

Hallo, ich hab eine MacOS qwertz Keyboard auf US Layout umgestellt da die Sonderzeichen besser erreichbar sind. Leider fehlt ...

Heiß diskutierte Inhalte
Batch & Shell
Anmeldevorgang für Informatikraum (Schule) unter Windows
gelöst Frage von IngenieursBatch & Shell27 Kommentare

Hey zusammen, ich werde in naher Zukunft den Informatik Raum meiner jetzigen Schule von dem aktuellen Betreiber übernehmen (Vertrag ...

Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von 92943Windows 1025 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Netzwerkgrundlagen
Welches Modem für VDSL 50000 der T-Com
Frage von Windows10GegnerNetzwerkgrundlagen18 Kommentare

Hallo, ein Kollege von mir will sich VDSL50000 von der T-Com holen, um daran einen Server zu betreiben. Ich ...