Batch per VBS schreiben und ausführen
Hallo,
ich versuche momentan ein VBS script zu schreiben, das Dateiveränderungen überwacht. Hierfür nutze ich rehash (rehash.sourceforge.net) zum Berechnen von Hashwerten. Leider schaffe ich es nicht das Tool mit Hilfe von VBS korrekt aufzurufen. Deswegen lasse ich VBS eine batch-Datei schreiben die auch korrekt erstellt wird. Eigenartigerweise taucht beim Ausführen der batch dann aber ein "1>", obwohl es in der Batch nicht steht.
Ich hänge den VBS Teil an:
Noch ein Beispiel für das 1> Problem, aus der CMD kopiert:
"rehash.exe -r -none -ed2k -sha1 -md5 -out:txt C:\Download\*.* 1>C:\Output\04082008_165541_FCIV.log"
Ich wäre für Hilfe sehr dankbar.
Gruß Vodkanier
PS: Ursprünglich habe ich das MS Tool FCIV verwendet, deswegen auch die Variable.
ich versuche momentan ein VBS script zu schreiben, das Dateiveränderungen überwacht. Hierfür nutze ich rehash (rehash.sourceforge.net) zum Berechnen von Hashwerten. Leider schaffe ich es nicht das Tool mit Hilfe von VBS korrekt aufzurufen. Deswegen lasse ich VBS eine batch-Datei schreiben die auch korrekt erstellt wird. Eigenartigerweise taucht beim Ausführen der batch dann aber ein "1>", obwohl es in der Batch nicht steht.
Ich hänge den VBS Teil an:
OPTION EXPLICIT
dim objFSO ' Filesystemobject
dim FCIV ' FCIV Anweisung
dim Folder ' zu scannendes Verzeichnis
folder = "C:\Download"
dim Output
Output = "C:\Output"
dim objFile
dim datum ' Zeit und Datum um Logs zu benennen
datum=date()
dim zeit
zeit=time()
zeit = Replace(zeit,":","") ': entfernen aus Uhrzeit
datum = Replace(datum,".","") '. entfernen aus Datum
Const ForWriting = 2 ' Konstante zum Schreiben in Dateien, bestehender Inhalt wird gelöscht
Const ForAppending = 8 ' Konstante zum Hinzufügen von Datensätzen
dim objshell
Set objShell = WScript.CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject") ' (Datei) Zugriffsobjekt erstellen
' Pfad der überprüft werden soll
if objFSO.FolderExists(Folder) = false then wscript.echo "Der Ordner, der geprüft werden soll, existiert nicht!"
' Pfad für Ergebnisse: Output
if objFSO.FolderExists(output) = false then
objFSO.CreateFolder(output)
else
wscript.echo "Ordner existiert schon: " & output
end if
' Batchgenerator
FCIV = "rehash.exe -r -none -ed2k -sha1 -md5 -out:txt " & folder & "\*.* " & chr(62) & " " & output & "\" & datum & "_" & zeit & "_FCIV.log"
wscript.echo FCIV
set objFile = objFSO.OpenTextFile("rehash.bat", ForWriting, true)
objFile.Write(FCIV)
objFile.Close
objshell.run "rehash.bat",,True
Noch ein Beispiel für das 1> Problem, aus der CMD kopiert:
"rehash.exe -r -none -ed2k -sha1 -md5 -out:txt C:\Download\*.* 1>C:\Output\04082008_165541_FCIV.log"
Ich wäre für Hilfe sehr dankbar.
Gruß Vodkanier
PS: Ursprünglich habe ich das MS Tool FCIV verwendet, deswegen auch die Variable.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 93571
Url: https://administrator.de/contentid/93571
Ausgedruckt am: 25.11.2024 um 11:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo =)
Ich bin auch grade dabei ein Programm mittels VB zu schreiben.
Ich habe gelesen das du mein Problem gelöst hasst und wär froh wenn du mir mal helfen würdest.
Mein Problem:
Ich habe in einem Formular zwei CheckBoxen eingeführt und ein Button.
Sobald ich eine der jeweiligen CheckBoxen anklicke soll eine Batch geschrieben werden mit inhalt
und wenn man dann anschließend auf den Button klickt soll die Batch gestartet werden.
Da ich noch anfänger bin wär ich froh wenn du mir helfen würdest aber bitte ausfühliche antworten
danke im voraus
Ich bin auch grade dabei ein Programm mittels VB zu schreiben.
Ich habe gelesen das du mein Problem gelöst hasst und wär froh wenn du mir mal helfen würdest.
Mein Problem:
Ich habe in einem Formular zwei CheckBoxen eingeführt und ein Button.
Sobald ich eine der jeweiligen CheckBoxen anklicke soll eine Batch geschrieben werden mit inhalt
@echo off
start C:/lol.exe
und wenn man dann anschließend auf den Button klickt soll die Batch gestartet werden.
Da ich noch anfänger bin wär ich froh wenn du mir helfen würdest aber bitte ausfühliche antworten
danke im voraus
Hallo Vodkanianer!
Was genau ist das Problem dabei?
Die eingefügte "1" vor dem ">" zeigt nur an, dass STDOUT umgeleitet wird - an der Funktionalität ändert das aber nichts ...
Nachvollziehen kannst Du das ganz einfach, indem Du eine Batchdatei
erstellst und ausführst ...
Da eine Umleitung in Batch defaultmäßig für den angesprochenen Kanal 1 (STDOUT) gilt, wird üblicherweise in Batch nur das Umleitungszeichen (">" oder ">>") geschrieben; anders ist dies bei der Umleitung der Fehlermeldungen von STDERR - dafür ist dann "2>" zu verwenden.
Grüße
bastla
Was genau ist das Problem dabei?
Die eingefügte "1" vor dem ">" zeigt nur an, dass STDOUT umgeleitet wird - an der Funktionalität ändert das aber nichts ...
Nachvollziehen kannst Du das ganz einfach, indem Du eine Batchdatei
dir c:\Output >nul
pause
Da eine Umleitung in Batch defaultmäßig für den angesprochenen Kanal 1 (STDOUT) gilt, wird üblicherweise in Batch nur das Umleitungszeichen (">" oder ">>") geschrieben; anders ist dies bei der Umleitung der Fehlermeldungen von STDERR - dafür ist dann "2>" zu verwenden.
Grüße
bastla
@ xmicha
kenne zwar VB nicht aber dafür hta. vielleicht kann dir das weiterhelfen:
in hta sieht eine checkbox wie folgt aus:
und das script dazu: (Vb-SCRIPT ist zwar ähnich wie VB. aber nicht das selbe du müsstest es daher noch anpassen)
kenne zwar VB nicht aber dafür hta. vielleicht kann dir das weiterhelfen:
in hta sieht eine checkbox wie folgt aus:
<input type="checkbox" id="haken" onclick="rRoutine">
und das script dazu: (Vb-SCRIPT ist zwar ähnich wie VB. aber nicht das selbe du müsstest es daher noch anpassen)
sub rRoutine
outputFile = "Dateiname.bat"
set fso = CreateObject("scripting.FileSystemObject")
set datei = fso.opentextfile(outputFile, 2, 1)
datei.write "echo erste Zeile" & vbCrLf
datei.write "echo zweite zeile" & vbCrLf
datei.write "pause"
datei.close
end sub