Ich habe Probleme mit einem scheinbar einfachen Skript, das ich im Wesentlichen ein Element vom PC des Benutzers kopiert und auf einem anderen Computer platziert; Der Zieldateipfad enthält jedoch ein Leerzeichen. Ich habe mehrere Methoden versucht, dieses Problem zu beheben (einige verstehe ich nicht vollständig), indem ich doppelte Anführungszeichen um den String verwende, um es zum Ausführen von Powershell zu zwingen.Fehler in der Batch-Datei wegen Speicherplatz
Um einen kurzen Vorlauf zu dieser Situation zu geben, muss ich hinzufügen, dass ich dieses Skript ursprünglich mit Powershell unter Windows 10 erstellt habe und hinzufügen sollte, dass es in Powershell völlig problemlos funktioniert, nur nicht als .bat. Ich verstehe, dass es einige Unterschiede in den Sprachen geben kann oder was durch die Programme interpretiert wird. Hier
ist die Zeichenfolge in der Frage:
Copy-Item $ENV:USERPROFILE\Desktop\VAST.accdb -destination "\\PRECDP19670\C$\Users\WAKE\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup" -Force -PassThru -Verbose
Das Ziel enthält den Raum, in dem Dateipfad.
Jede Hilfe wird geschätzt!
'Copy-item' ist ein PowerShell-Befehl, der nur in PowerShell ausgeführt werden kann. –
"Es kann einige Unterschiede in den Sprachen geben" ist eine große Untertreibung. Batch Scripting ist fast, aber nicht ganz im Gegensatz zu PowerShell Scripting. Sie müssen entscheiden, ob Sie PowerShell- oder Batch-Dateien (oder möglicherweise PowerShell * aus * Batch-Dateien) verwenden, bevor diese Frage eine sinnvolle Antwort hat. Der einfachste Weg, PowerShell-Formular-Batchdateien aufzurufen, besteht darin, das Skript in eine eigene '.ps1'-Datei zu laden und' powershell.exe -file script.ps1' aufzurufen. Es ist zwar möglich, Befehle direkt auszuführen, aber Sie stoßen schnell auf Probleme, die z. B. "-EncodedCommand" erfordern. –
@JeroenMostert Danke Mann. Ich habe tatsächlich PowerShell verschrottet und das Skript im Stapelbetrieb erstellt, und es funktioniert großartig. Das Beste von allem, ich dachte, die Arbeit in Batch-Datei wäre schwieriger gewesen, aber es scheint einfacher zu sein, als wenn ich in PowerShell schrieb. Verwendet eine einfache ** xcopy ** und alles ist gut. – zhaque