schauan
Goto Top

Einzeiler cmd in script

Hallöchen,

ich versuche gerade, einen Einzeiler per Script auszuführen. Gelingt mir aber nicht face-sad
Zum Löschen von Daten will ich erst das Verzeichnis wechseln und dann löschen. Wenn ich den entsprechenden Codeteil im cmd direkt ausführe, funktioniert es. Ich hab schon verschiedene Kombinationen von Anführungszeichen versucht und bisher wohl nicht die richtige erwischt face-sad Kann mir da jemand helfen?

Dim strShell
Dim wsh
Dim retval
Set wsh = CreateObject("WScript.Shell")  
Dim waitOnReturn: waitOnReturn = True
Dim windowStyle: windowStyle = 1
strShell = """cmd.exe /C /S ""cd c:\temp & for /f ""skip=3 delims="" %i in ('dir /a-D /o-d /b *.*') do @echo Del  /y ""%~i"""""""  
msgbox strShell
wsh.Run strShell, windowStyle, waitOnReturn
retval = Shell(strShell, 1)
Call Shell(strShell, 1)

Content-Key: 391669

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

Printed on: April 19, 2024 at 22:04 o'clock

Member: emeriks
Solution emeriks Nov 05, 2018 updated at 07:27:26 (UTC)
Goto Top
Hi,
Du hast eine Fehler beim Setzen der "".
"""cmd.exe /C /S ""cd c:\temp & for /f ""skip=3 delims="" %i in ('dir /a-D /o-d /b *.*') do @echo Del /y ""%~i"""""""
entspricht "ausgepackt"
"cmd.exe /C /S "cd c:\temp & for /f "skip=3 delims=" %i in ('dir /a-D /o-d /b *.*') do @echo Del /y "%~i"""
Demnach soll er "cmd.exe /C /S " ausführen, was natürlich nicht geht. usw.

E.

Edit:
Nimm die funktionierende Zeile aus der CMD. Dann ersetze in dieser Zeile jedes " durch ein "". Erst dann je ein " am Anfang und Ende setzen.
Member: schauan
schauan Nov 05, 2018 updated at 09:28:37 (UTC)
Goto Top
Hallöchen,

danke, im Prinzip hatte ich es so gemacht nur müssen zwischendrin noch die zusätzlichen Anführungszeichen bei skip ... delims ...
Hauptursache war wohl das /y bei Del, das gibt es nicht als Option. Habe es jetzt erst mal so gelöst natürlich dann ohne das @echo face-smile

Dim strShell, strCmd
Dim wsh
Set wsh = CreateObject("WScript.Shell")  
Dim waitOnReturn: waitOnReturn = True
Dim windowStyle: windowStyle = 3
wsh.currentdirectory="c:\temp"  
strCmd = """for /f ""skip=10 delims="" %i in ('dir /a-D /o-d /b *.*') do @echo Del ""%~i"""  
strShell = "cmd.exe /C /S " & strcmd  
wsh.Run strShell, windowStyle, waitOnReturn