Supportnet / Forum / BS-Sonstige
Batchdatei zum Kopieren in Unterordner
Frage
Hallo zusammen,
ich möchte gerne eine Batchdatei erstellen, die mir eine Datei (HEADER.htm) in alle Unterverzeichnisse des Verzeichnisses kopiert, in dem sie sich selber befindet.
Nun ist mir das Kopieren als solches klar:
copy "HEADER.htm" " ..... "
Was aber ist in meinem Fall " ..... " ?
Wäre nett, wenn mir da jemand helfen kann.
Viele Grüße
guethi
Antwort 1 von Rodi
Hi.
Ob das mit Batch Dateien geht bin ich mir nicht sicher. Ich denke aber schon. Leichter geht es mit Scriptsprachen. Ich habe selber mal einen Suchalgorithmus für die Registry programmiert, um einen Eintrag zu finden und zu ersetzen. Da war ich gleich mal 3 Tage beschäftigt. Das Vorgehen dürfte aber das Gleiche sein.
Als Sprache habe ich AutoIt 3 verwendet.
http://www.autoitscript.com
Ich hoffe es hilft weiter.
Gruss @all,
Dirk
Hier mal der Quellcode:
Ob das mit Batch Dateien geht bin ich mir nicht sicher. Ich denke aber schon. Leichter geht es mit Scriptsprachen. Ich habe selber mal einen Suchalgorithmus für die Registry programmiert, um einen Eintrag zu finden und zu ersetzen. Da war ich gleich mal 3 Tage beschäftigt. Das Vorgehen dürfte aber das Gleiche sein.
Als Sprache habe ich AutoIt 3 verwendet.
http://www.autoitscript.com
Ich hoffe es hilft weiter.
Gruss @all,
Dirk
Hier mal der Quellcode:
$ret = RegSearch("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root",1)
Exit
Func RegSearch($regkey,$index)
While 1
Local $var = RegEnumKey($regkey, $index)
$index = $index + 1
If @error = -1 Then
$ret = ReadValues($regkey,1)
Return 1
ElseIf $var = "" Then
$ret = ReadValues($regkey,1)
Return -1
ElseIf StringLen($var) > 1 Then
$ret = RegSearch($regkey & "\" & $var, 1)
EndIf
WEnd
Return $var
EndFunc
Func ReadValues($regkey,$index)
While 1
Local $var = RegEnumVal($regkey, $index)
$index = $index + 1
If $var = 1 Then
Return -1
ElseIf $var = -1 Then
Return $var
ElseIf $var = "" Then
Return -1
EndIf
If $var = "DosDeviceName" Then
FuncCheckValue($regkey)
EndIf
WEnd
Return $var
EndFunc
Func FuncCheckValue($regkey)
Local $var = RegRead($regkey,"DosDeviceName")
If $var = "COM1" Then
writeval($regkey)
EndIf
EndFunc
Func writeval($regkey)
Local $val = RegRead($regkey, "ForceFifoEnable")
If @error Then
$ret = RegWrite($regkey,"ForceFifoEnable","REG_DWORD",0)
MsgBox(262144,"FiFo Enabler","FiFo was switched off.")
ElseIf $val = 1 Then
$ret = RegWrite($regkey,"ForceFifoEnable","REG_DWORD",0)
MsgBox(262144,"FiFo Enabler","FiFo was switched off.")
Else
$ret = RegWrite($regkey,"ForceFifoEnable","REG_DWORD",1)
MsgBox(262144,"FiFo Enabler","FiFo was switched on.")
EndIf
EndFunc
Antwort 2 von guethi
Hallo Dirk,
das sieht mir doch recht kompliziert aus, dennoch vielen Dank. Ich habe mittlerweile etwas gefunden:
for /D %%F in (*) do @echo copy HEADER.htm %%F
Da mir die ganze Batch-Geschichte nicht ganz klar ist, kann ich dieses Schnipsel aber leider nicht anpassen. Ideen dazu?
Viele Grüße
guethi
das sieht mir doch recht kompliziert aus, dennoch vielen Dank. Ich habe mittlerweile etwas gefunden:
for /D %%F in (*) do @echo copy HEADER.htm %%F
Da mir die ganze Batch-Geschichte nicht ganz klar ist, kann ich dieses Schnipsel aber leider nicht anpassen. Ideen dazu?
Viele Grüße
guethi
Antwort 3 von manei
Hallo,
wenn Du die Batch im Hauptverzeichnis dieser Unterverzeichnisse liegen hast, müßte das gehen:
for /D /r %%F in (*.*) do copy HEADER.htm %%F
ansonsten in die Klammer das Hauptverzeichnis reinschreiben mit
Laufwerk:\Verzeichnispfad\*.*
MfG maneich
wenn Du die Batch im Hauptverzeichnis dieser Unterverzeichnisse liegen hast, müßte das gehen:
for /D /r %%F in (*.*) do copy HEADER.htm %%F
ansonsten in die Klammer das Hauptverzeichnis reinschreiben mit
Laufwerk:\Verzeichnispfad\*.*
MfG maneich
Antwort 4 von guethi
Hallo maneich,
klappt leider auch nicht. Mache ich grundlegend etwas falsch?
Ich habe in der bat nichts drin stehen außer dieser Zeile, ist das ok so? Müsste HEADER.htm vielleicht in Anführungszeichen stehen?
Viele Grüße
guethi
klappt leider auch nicht. Mache ich grundlegend etwas falsch?
Ich habe in der bat nichts drin stehen außer dieser Zeile, ist das ok so? Müsste HEADER.htm vielleicht in Anführungszeichen stehen?
Viele Grüße
guethi
Antwort 5 von Arno_Nym
Zitat:
klappt leider auch nicht.
klappt leider auch nicht.
Könntest du vielleicht etwas genauer werden? Die angezeigte Fehlermeldung wäre z.B. hilfreich.
Zitat:
Mache ich grundlegend etwas falsch?
Mache ich grundlegend etwas falsch?
Nö. Der Befehl von maneich ist im Prinzip richtig.
Zitat:
Müsste HEADER.htm vielleicht in Anführungszeichen stehen?
Müsste HEADER.htm vielleicht in Anführungszeichen stehen?
Nö. Aber falls deine Unterverzeichnisse Leerzeichen enthalten, dann muß das zweite "%%F" (also am Ende der Zeile) in Anf.zeichen stehen.
Arno
Antwort 6 von Solo
Hi, kannst es mal so versuchen:
@echo off
for /D /r %%F in ( Laufwerk:\Verzeichnispfad\ ) do copy HEADER.htm %%F
@echo off
for /D /r %%F in ( Laufwerk:\Verzeichnispfad\ ) do copy HEADER.htm %%F
Antwort 7 von Arno_Nym
@Solo
Schuß ins Blaue, oder?
Arno
Schuß ins Blaue, oder?
Arno
Antwort 8 von guethi
Mal an alle:
Vielen Dank! :-)
Besonders an maneich und Arno_Nym. Der Code klappt, es lag, wie von Arno_Nym vermutet an den Leerzeichen.Die Anführungszeichen haben das Problem behoben.
Fehlermeldung gab es übrigens zuvor keine, es geschah einfach nichts.
Arno_Nym, hast Du zufällig einen Link oder ein Tut, dass ein wenig in die Batch-Geschichten einführt? Ich habe noch nichts gefunden, dass mich überzeugt.
Nochmals vielen Dank an alle, die sich Gedanken gemacht haben.
Beste Grüße
guethi
Vielen Dank! :-)
Besonders an maneich und Arno_Nym. Der Code klappt, es lag, wie von Arno_Nym vermutet an den Leerzeichen.Die Anführungszeichen haben das Problem behoben.
Fehlermeldung gab es übrigens zuvor keine, es geschah einfach nichts.
Arno_Nym, hast Du zufällig einen Link oder ein Tut, dass ein wenig in die Batch-Geschichten einführt? Ich habe noch nichts gefunden, dass mich überzeugt.
Nochmals vielen Dank an alle, die sich Gedanken gemacht haben.
Beste Grüße
guethi
Antwort 9 von Solo
http://www.axel-hahn.de/axel/page_compi/bat_tipps.htm
http://de.wikipedia.org/wiki/Batchdatei
http://jens.quicknote.de/index.html
http://de.wikipedia.org/wiki/Batchdatei
http://jens.quicknote.de/index.html
Antwort 10 von guethi
Danke auch dafür! :-)
Beste Grüße
guethi
Beste Grüße
guethi

