donnobre
Goto Top

Vbs in batch schreiben

Hallo zusammen ich habe ein problem eine vbs datei in eine batch zu schreiben,
habe auch schon mehrere varianten ausprobiert lehrzeichen und >
Problem macht mir dieses ) zeichen es wird einfach nicht in die batch geschrieben.

 
set DOWN2=%TEMP%\download.cmd
set DOWN3=%TEMP%\download.vbs
			echo set shell = CreateObject("Wscript.Shell")>"%DOWN3%"  
			echo shell.run "%DOWN2%",0 >>"%DOWN3%"  

Content-ID: 168077

Url: https://administrator.de/forum/vbs-in-batch-schreiben-168077.html

Ausgedruckt am: 23.12.2024 um 18:12 Uhr

60730
60730 15.06.2011 um 20:02:18 Uhr
Goto Top
Servus,

Du mußt besonderezeichen maskieren.

C:\>echo ^>123
>123

C:\>

...und dann ...

echo 123>abc
statt
echo 123 > abc

Leerezeichen sind auch Zeichen

Gruß
edit,
da du via Edit Code Blöcke spendiert hast, spensiere ich auch was...
/edit

set DOWN2=%TEMP%\download.cmd
set DOWN3=%TEMP%\download.vbs
echo set shell = CreateObject("Wscript.Shell")>"%DOWN3%"  
echo shell.run "%DOWN2%"^,^0>>"%DOWN3%"  
DONNobre
DONNobre 15.06.2011 um 20:19:02 Uhr
Goto Top
bei mir bleibt das problem bestehen
das ) in der 3ten Zeile wird nicht in die batch geschrieben
Friemler
Friemler 15.06.2011 um 20:22:20 Uhr
Goto Top
Hi DONNobre,

oder Du schreibst (übersichtlicher) gleich
> "%DOWN3%" echo Set Shell = CreateObject("WScript.Shell")  
>>"%DOWN3%" echo Shell.Run "%DOWN2%", 0  

Dann klappt's auch mit dem ). face-wink

Gruß
Friemler
60730
60730 15.06.2011 um 20:22:50 Uhr
Goto Top
Salü,
set DOWN2=%TEMP%\download.cmd
set DOWN3=%TEMP%\download.vbs
echo set shell = CreateObject("Wscript.Shell")> "%DOWN3%"  
echo shell.run "%DOWN2%"^,^0>>"%DOWN3%"  
type "%DOWN3%"  
pause
ergibt bei mir...

C:\script\test>set DOWN2=C:\DOKUME~1\timo.beil\LOKALE~1\Temp\download.cmd

C:\script\test>set DOWN3=C:\DOKUME~1\timo.beil\LOKALE~1\Temp\download.vbs

C:\script\test>echo set shell = CreateObject("Wscript.Shell") 1>"C:\DOKUME~1\timo.beil
\LOKALE~1\Temp\download.vbs"

C:\script\test>echo shell.run "C:\DOKUME~1\timo.beil\LOKALE~1\Temp\download.cmd",0 1>>
"C:\DOKUME~1\timo.beil\LOKALE~1\Temp\download.vbs"

C:\script\test>type "C:\DOKUME~1\timo.beil\LOKALE~1\Temp\download.vbs"
set shell = CreateObject("Wscript.Shell")
shell.run "C:\DOKUME~1\timo.beil\LOKALE~1\Temp\download.cmd",0

C:\script\test>pause
Drücken Sie eine beliebige Taste . . .

@ Friemler - oder so, wobei ich kein Thema mit der Klammer, sondern mit dem Komma hatte....
XP SP3
DONNobre
DONNobre 15.06.2011 um 20:26:08 Uhr
Goto Top
face-smile das hatte ich auch schon ausprobiert .. hattest das ja auch letztes mal verwendet in dem autostart script .... aber leider geht das auch nicht
Friemler
Friemler 15.06.2011 um 20:36:01 Uhr
Goto Top
Hallo DONNobre,

also bei mir funktioniert es, Dein ursprünglicher Code hat ja auch bei T-Mo funktioniert. Da muss in Deinem Code noch irgendein unsichtbares Zeichen vorhanden sein. Kopiere Dir doch mal den Code von T-Mo oder mir über den Quelltext-Link am oberen rechten Rand der Code-Boxen in Deinen Editor.

Wenn wir dabei sind, auch wenn das bestimmt nichts mit Deinem Problem zu tun hat: Speichere Batchcode immer unter der Codierung OEM850 ab (läßt sich in Notpad++ einstellen). Dann wird der Text in ASCII-Codierung gespeichert, normalerweise in ANSI-Codierung, was bei äöüßÄÖÜ zu Zeichensalat bei der Ausgabe auf der Konsole führt.

Gruß
Friemler
DONNobre
DONNobre 15.06.2011 um 20:38:33 Uhr
Goto Top
kopiert ... eingefügt
ging nicht ... lehrzeichen am ende rausgenommen
ging nicht

aber mir ist gerade ne andere idee gekommen kann es sein das er das zeichen nicht nehmen will weil es in der For schleife ist ?
:ncftpput
set DOWN=%TEMP%\download.txt
set DOWN2=%TEMP%\download.cmd
set DOWN3=%TEMP%\download.vbs
del %DOWN% & %DOWN2% & %DOWN3%
if exist "%TEMP%\ncftpput.exe" (  
	set FTPProgramm="%TEMP%\ncftpput.exe"  
	if "%counter%" EQU "%maxCounter%" goto EOL  
) else (
			echo OPEN %FTPAdress%>>%DOWN%
			echo USER %FTPUser%>>%DOWN%
			echo %FTPPsw%>>%DOWN%
			echo BIN>>%DOWN%
			echo LCD c:\>>%DOWN%
			echo GET ncftpput.exe>>%DOWN%
			echo GET Ftpsend.exe>>%DOWN%
			echo GET DatenAufFTPkopieren.cmd>>%DOWN%
			echo quit>>%DOWN%
			echo c:>>%DOWN2%
			echo cd\>>%DOWN2%
			echo ftp -n -s:c:download.txt>>%DOWN2%

echo set shell = CreateObject("Wscript.Shell")> "%DOWN3%"  
echo shell.run "%DOWN2%"^,^0>>"%DOWN3%"  

			call "%DOWN3%"  
			set /a Counter=%Counter% + 1
			ping localhost -n 10 >NUL
)
goto :EOL
Friemler
Friemler 15.06.2011 um 20:56:32 Uhr
Goto Top
Tja, wenn Du die richtige Codeformatierung verwendet hättest (mit < und > statt den runden Klammern), hätte ich viel mehr Lust das zu analysieren... face-wink Ich finde nämlich keine FOR-Schleife in der Bleiwüste da oben.
DONNobre
DONNobre 15.06.2011 um 21:01:46 Uhr
Goto Top
hab ich doch schon gemacht face-smile mein rechner hing nur und ich kamm nicht so schnell hinterher
Friemler
Friemler 15.06.2011 um 21:05:14 Uhr
Goto Top
AHHH, besser! face-wink

Ja, der ECHO-Befehl zum schreiben der problematischen Zeile steht in einem geklammerten ELSE-Block, dafür ist Batchscript wieder mal zu dumm. Du musst die Klammern "escapen", indem Du ein ^ davor schreibst.


BTW: Verringere und vereinheitliche doch bitte in Zukunft die Tiefe der Einrückungen, sieht ja zum fürchten aus.

Gruß
Friemler
60730
60730 15.06.2011 um 21:06:36 Uhr
Goto Top
moinsen,

... na dann....
bei den ganzen downs geht man ja downunder....
:ncftpput
set DOWN=%TEMP%\download
del %DOWN%.*
echo %TEMP%
if exist "%TEMP%\ncftpput.exe" (  
              set FTPProgramm="%TEMP%\ncftpput.exe"  
              if "%counter%" EQU "%maxCounter%" goto EOL  
) else (
            echo OPEN %FTPAdress%>>%DOWN%.txt
            echo USER %FTPUser%>>%DOWN%.txt
            echo %FTPPsw%>>%DOWN%.txt
            echo BIN>>%DOWN%.txt
            echo LCD c:\>>%DOWN%.txt
            echo GET ncftpput.exe>>%DOWN%.txt
            echo GET Ftpsend.exe>>%DOWN%.txt
            echo GET DatenAufFTPkopieren.cmd>>%DOWN%.txt
            echo quit>>%DOWN%.txt
            echo c:>>%DOWN%.cmd
            echo cd\>>%DOWN%.cmd
            echo ftp -n -s:c:download.txt>>%DOWN%.cmd
            echo set shell = CreateObject("Wscript.Shell")> "%DOWN%.vbs"  
            echo shell.run "%DOWN%"^,^0>>"%DOWN%.vbs"  
            type "%DOWN3%.vbs"  
            call "%DOWN3%.vbs"  
            set /a Counter=%Counter% + 1
            ping localhost -n 10 >NUL
)
goto :EOL
edit too late, hat er ja schon...
apropos late ich geh heim...
DONNobre
DONNobre 15.06.2011 um 21:19:02 Uhr
Goto Top
die version ist schöner ... es wird leider an anderen stellen noch meine version von DOWN1-3 verwendet deswegen kann ich das leider so nicht machen ... aber danke ...
das mit den klammern hätte mir auch früher einfallen können
mathe172
mathe172 15.06.2011 um 22:23:16 Uhr
Goto Top
Hallo,

und damit ich auch noch was gesagt habe face-wink:
            (
            echo.OPEN %FTPAdress%
            echo.USER %FTPUser%
            echo.%FTPPsw%
            echo.BIN
            echo.LCD c:\
            echo.GET ncftpput.exe
            echo.GET Ftpsend.exe
            echo.GET DatenAufFTPkopieren.cmd
            echo.quit
            )>>%DOWN%.txt
            (
            echo.c:
            echo.cd\
            echo.ftp -n -s:c:download.txt
            )>>%DOWN%.cmd
            (
            echo.set shell = CreateObject^("Wscript.Shell"^)  
            echo.shell.run "%DOWN%"^,^0  
            )>"%DOWN%.vbs"  

Finde ich etwas schöner (. nach echo und nur einmal umleiten pro Datei-ist auch bei Änderungen schneller...)

Mathe172
DONNobre
DONNobre 15.06.2011 um 22:34:49 Uhr
Goto Top
das finde ich auch sehr schön ... einfach und schnell zu ändern
pieh-ejdsch
pieh-ejdsch 15.06.2011 um 23:39:32 Uhr
Goto Top
moin,

und wenn Du noch ein paar SonderZeichen nicht gleich findest macht es dieses hier etwas leichter.

Sonder Zeichen Nach Echo.cmd

Gruß Phil