batchfailbob
Goto Top

Leere Variable wenn von Acronis ausgeführt

Hallo zusammen!

Ich habe ein kleines Problem mit folgendem Batch-Script. Wenn Ich es direkt ausführe klappt Alles wunderbar und es schreibt die Volumenseriennummer in die Datei sn.txt
Wenn ich es allerdings in Acronis als Script zum ausführen vor der Sicherung angebe, schreibt er nur ECHO ist ausgeschaltet (OFF). in die Datei. Vermutlich wird also der Variable nichts zugewiesen.

@echo off

c:

for /F "tokens=2" %%a in ('dir c: ^| find /i "serien"') do set cur_sn=%%a  
echo Aktuelle Volumenseriennummer: %cur_sn%

if exist c:\Admin\sn.txt (
	set /p last_sn= <c:\Admin\sn.txt
) else (
	set last_sn=NA
)
echo Letzte Volumenseriennummer: %last_sn%


if "%cur_sn%" == "%last_sn%" (  
	echo Gleiche Platte erkannt!
	echo Tue nichts!
) else (
	echo Unterschiedliche Platte erkannt!
	echo Lösche alle Dateien!

	for /D %%i in (w:\Mail\*) do rd /S/Q "%%i"  
	del /S/Q w:\Mail\*

	for /D %%i in (w:\foo\*) do rd /S/Q "%%i"  
	del /S/Q w:\foo\*

	for /D %%i in (w:\bar\*) do rd /S/Q "%%i"  
	del /S/Q w:\bar\*
)
echo Speichere aktuelle Volumenseriennummer!
echo %cur_sn%> c:\Admin\sn.txt

Jemand eine Idee?

Grüße und Danke im Vorraus

Content-Key: 180496

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

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

Member: jeb-the-batcher
jeb-the-batcher Feb 14, 2012 at 10:18:50 (UTC)
Goto Top
Hallo batchfailbob,

das Problem könnte auch sein, dass %cur_sn% durchaus einen Inhalt hat, aber die Seriennr mit einer Ziffer endet.

Das führt dann dazu, z.B.
echo A345:FEE2> C:\admin\sn.txt
Besser zu lesen als
echo A345:FEE     2> C:\admin\sn.txt
Sprich eine Umleitung von stream2

Besser das ganze drehen um diese Art von Problemen zu vermeiden
> C:\admin\sn.txt echo %cur_sn%

Gruß
jeb
Member: AndreasHoster
AndreasHoster Feb 14, 2012 at 10:59:44 (UTC)
Goto Top
Hallo batchfailbob,

noch eine Anmerkung, nicht zur Problemlösung, aber zur Problemsuche (was meistens mehr das Problem ist):
Mit @echo off alle Ausgaben abschalten die zur Aufklärung dienen könnten hilft natürlich nur begrenzt weiter.
Lass doch mal das @echo off weg (kann man ja wieder reinmachen wenns nicht tut) und leite alle Ausgaben dieses Skriptes in eine Datei um.
Dann kann man eventuell auch sehen, was genau wo zugewiesen wird.
Member: pieh-ejdsch
pieh-ejdsch Feb 14, 2012 at 11:59:40 (UTC)
Goto Top
moin,

da es kein Handle "A345:FEE2" gibt - wird das Handle nur umgeleitet, wenn diese Ziffer als eine einzelne Ziffer dasteht.
rem Handle 1 wird umgeleitet
echo 12345> testdatei

rem oder so auch
echo 123456 1>testdatei

rem Handle 6 wird umgeleitet
echo 12345 6>testdatei

Um Dir die Volumeseriennummer zu holen ist dir unpassend.
for /f "tokens=2" %%i in ('vol^|more +1') do (echo %%i |findstr /g:sn.txt >&3 && echo nix zu tun) 3>nul 2>&3 || (>&3 echo %%i  
  echo mach mir die Sicherung
  rem jetzt Sicherung
)3>sn.txt

[Edit]
rem der Befehl für dir im Laufwerk c ist mit doppelpunkt und Backslash
dir c:\
rem sonst gibt Dir der dir Dir den aktuellen Pfad aus und der Findstr "sicher"
rem findet alles andere auch noch.
[/Edit]

Gruß Phil