okidoki
Goto Top

Datei holen (mit Spezifikt.) und Verzeichnis holen vorhanden, aber VBS in bat umwandeln

Guten Abend,
dies sind zwei Luxusvarianten der oben beschriebenen vbs-Möglichkeiten. Diese sollen nun jeweils in eine bat eingebaut werden. Die Vorarbeit ist bereits vorhanden, aber ich weiß leider nicht weiter.

Zwei vbs-Zweizeiler, die sehr gut funktionieren, sollen jeweils in eine bat eingebaut werden.
(Weiterführung des Threads: VBS-BAT Datei auswählen&error=738861#738861)

Hat jemand zwei Ideen?

Dateiauswahl:
Set objDialog=CreateObject("UserAccounts.CommonDialog"):objDialog.Filter="Alle (*.*)": objDialog.InitialDir="D:\"  
objDialog.Flags=&H800+&H4+&H8:intResult=objDialog.ShowOpen:WScript.Echo objDialog.FileName

Ordnerauswahl:
Set V=CreateObject("Shell.Application").BrowseForFolder(0, "Verzeichnis wählen", 16, 17)  
If Not V Is Nothing Then WScript.Echo V.Self.Path
(Code nach bastlas Vorgabe geändert s.u.)

So sollte jeweils das Ende in den batches werden, da die Variablen daraus jeweils verarbeitet werden sollen:

set "Eingabe="  
for /f "delims=" %%i in ('cscript //nologo %temp%\msgbox.vbs') do set "Eingabe=%%i"  

del "%temp%\msgbox.vbs"  

if defined Eingabe (GOTO weiter) else (GOTO :n-weiter)

:weiter
echo weiter %Eingabe%
pause
exit

:n-weiter
echo n-weiter
pause
exit

Gruß OKIDOKI

Content-ID: 181912

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

Ausgedruckt am: 19.11.2024 um 17:11 Uhr

bastla
bastla 13.03.2012 um 22:12:06 Uhr
Goto Top
Hallo OKIDOKI!

Magst Du nicht etwas genauer erklären, welche Art von Ideen Du denn eigentlich suchst?

Eine könnte ich aber jedenfalls trotzdem schon mal anbieten: Wenn Du kein "/b" dazu verwendest, hat "exit" mE keinen Sinn - "goto :eof" tut's dann auch ...

... oder gut, noch eine zweite: Im zwieten Script lässt sich die zweite Zeile auf
If Not V Is Nothing Then WScript.Echo V.Self.Path
verkürzen.

Grüße
bastla
OKIDOKI
OKIDOKI 13.03.2012 um 23:41:46 Uhr
Goto Top
Hallo bastla,
die Idee dahinter ist, die vbs jeweils in eine batch zu packen. Dann soll jeweils (also Ordner/Datei auswählen getrennte batch) die Variable ausgelesen werden.
Einmal die batch "Ordner auswählen" (mit Pfad als Vorgabe innerhalb der vbs-Prozedur) und zum anderen "Datei auswählen" (mit Pfad und Dateiendung als Vorgabe innerhalb der vbs-Prozedur).
Wie gehabt soll "if defined" abgefragt werden können und mit einer vorhandenen Variable weitergearbeitet werden. In der jeweiligen vbs-Variante funktioniert das ja, aber ich schaffe es nicht, sie ins batch zu packen ... ;-(

PS: exit ist nur zum Testen ...

Gruß OKIDOKI
bastla
bastla 13.03.2012 um 23:47:11 Uhr
Goto Top
Hallo OKIDOKI!
ich schaffe es nicht, sie ins batch zu packen ... ;-(
Davon wäre ich nun nicht ausgegangen ...

Versuch es so:
@echo off & setlocal
set G=%temp%\GetFile.vbs

 >%G% echo Set objDialog=CreateObject("UserAccounts.CommonDialog"):objDialog.Filter="Alle (*.*)": objDialog.InitialDir="D:\"  
>>%G% echo objDialog.Flags=^&H800+^&H4+^&H8:intResult=objDialog.ShowOpen:WScript.Echo objDialog.FileName

set "Eingabe="  
for /f "delims=" %%i in ('cscript //nologo %G%') do set "Eingabe=%%i"  

if defined Eingabe (GOTO weiter) else (GOTO :n-weiter)

:weiter
echo weiter %Eingabe%
pause
goto :eof

:n-weiter
echo n-weiter
pause
goto :eof
bzw so
@echo off & setlocal
set G=%temp%\GetFolder.vbs

 >%G% echo Set V=CreateObject("Shell.Application").BrowseForFolder(0, "Verzeichnis wählen",16,17)  
>>%G% echo If Not V Is Nothing Then WScript.Echo V.Self.Path

set "Eingabe="  
for /f "delims=" %%i in ('cscript //nologo %G%') do set "Eingabe=%%i"  

if defined Eingabe (GOTO weiter) else (GOTO :n-weiter)

:weiter
echo weiter %Eingabe%
pause
goto :eof

:n-weiter
echo n-weiter
pause
goto :eof
Grüße
bastla
OKIDOKI
OKIDOKI 13.03.2012 um 23:55:05 Uhr
Goto Top
Hallo bastla,

whoau! Ich vermute, ich hatte heute nachmittag copy/paste Probleme, da ich eigentlich dasselbe gemacht ahtte wie du. Allerdings kamen immer irgendwelche Fehlermeldungen, weil "=" fehlte usw.
In jedem Fall super, Danke!!!

Abschließend noch einmal Dankeschön auch an Dani, von der ich die Idee hatte und anderen, die sich in diesem "weltbesten" Forum diesem Prblem genährt hatten.
Außerordentlichen Dank an bastla!

Gruß OKIDOKI