PowerShell unter Windows

0

Ich führe eine bat-Datei über die Eingabeaufforderung aus und übergebe ihr 2 vollqualifizierte Namen (dies ist für PGP), und sie läuft einwandfrei.

Wenn ich dieselbe Fledermausdatei von Powershell mit denselben Namen ausführe, wird sie ausgeführt und die Ausgabe erstellt, es wird jedoch die Meldung "Das System kann den angegebenen Pfad nicht finden" angezeigt.

In cmd:

mybatfile.bat e:\dirname\filename.ext  e:\dirname\filename.ext

In PS:

./mybatfile e:\dirname\filename.ext  e:\dirname\filename.ext

Die Bat-Datei sieht folgendermaßen aus:

@echo off
c:
cd users\username
set inputfile=%1
set outputfile=%2

pgp --encrypt %inputfile% --recipient keyid --output %outputfile% --overwrite remove
Adesh S.
quelle
Entfernen Sie die @echo offund prüfen Sie, ob Ihnen dies Hinweise gibt.
DavidPostill
Wo befinden Sie sich im Dateisystem, wenn Sie diese Befehle ausführen? Wo ist die Batch-Datei? Befindet sich die Batch-Datei auf Ihrer PATH?
Ben N

Antworten:

0

Ich vermute, Sie sind schuld daran, dass Sie keinen absoluten Pfad angeben. Wenn sich Ihr aktueller Ordner also irgendwo tiefer im Laufwerk c: befindet, versucht Ihr Code, von dort aus den Ordner users \ username zu kopieren, der dort nicht vorhanden ist.
Übrigens sollten Sie Pfade, die möglicherweise Leerzeichen oder andere gefährliche Zeichen enthalten, immer in doppelte Anführungszeichen setzen.

@echo off
cd /D "C:\users\username"
set "inputfile=%~1"
set "outputfile=%~2"

pgp --encrypt "%inputfile%" --recipient keyid --output "%outputfile%" --overwrite remove
LotPings
quelle