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-Key: 168077

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

Printed on: April 25, 2024 at 05:04 o'clock

Mitglied: 60730
60730 Jun 15, 2011 at 18:02:18 (UTC)
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%"  
Member: DONNobre
DONNobre Jun 15, 2011 at 18:19:02 (UTC)
Goto Top
bei mir bleibt das problem bestehen
das ) in der 3ten Zeile wird nicht in die batch geschrieben
Member: Friemler
Friemler Jun 15, 2011 at 18:22:20 (UTC)
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
Mitglied: 60730
60730 Jun 15, 2011 at 18:22:50 (UTC)
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
Member: DONNobre
DONNobre Jun 15, 2011 at 18:26:08 (UTC)
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
Member: Friemler
Friemler Jun 15, 2011 at 18:36:01 (UTC)
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
Member: DONNobre
DONNobre Jun 15, 2011 at 18:38:33 (UTC)
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
Member: Friemler
Friemler Jun 15, 2011 at 18:56:32 (UTC)
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.
Member: DONNobre
DONNobre Jun 15, 2011 at 19:01:46 (UTC)
Goto Top
hab ich doch schon gemacht face-smile mein rechner hing nur und ich kamm nicht so schnell hinterher
Member: Friemler
Friemler Jun 15, 2011 at 19:05:14 (UTC)
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
Mitglied: 60730
60730 Jun 15, 2011 at 19:06:36 (UTC)
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...
Member: DONNobre
DONNobre Jun 15, 2011 at 19:19:02 (UTC)
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
Member: mathe172
mathe172 Jun 15, 2011 at 20:23:16 (UTC)
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
Member: DONNobre
DONNobre Jun 15, 2011 at 20:34:49 (UTC)
Goto Top
das finde ich auch sehr schön ... einfach und schnell zu ändern
Member: pieh-ejdsch
pieh-ejdsch Jun 15, 2011 at 21:39:32 (UTC)
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