我从命令提示符执行一个 bat 文件,并向其传递 2 个完全限定名称(这是用于 PGP 的),它运行良好。
当我从 Powershell 执行相同的 bat 文件并向其传递相同的名称时,它会运行并产生输出,但会显示一条消息“系统找不到指定的路径”。
在cmd中:
mybatfile.bat e:\dirname\filename.ext e:\dirname\filename.ext
在 PS 中:
./mybatfile e:\dirname\filename.ext e:\dirname\filename.ext
该bat文件如下:
@echo off
c:
cd users\username
set inputfile=%1
set outputfile=%2
pgp --encrypt %inputfile% --recipient keyid --output %outputfile% --overwrite remove
答案1
我猜你的错误在于没有给出绝对路径,所以如果你当前的文件夹位于 c: 驱动器的某个较深位置,你的代码会尝试从那里 cd 到不存在的文件夹 users\username。
顺便说一句,你应该始终用双引号将可能包含空格或其他有害字符的路径括起来。
@echo off
cd /D "C:\users\username"
set "inputfile=%~1"
set "outputfile=%~2"
pgp --encrypt "%inputfile%" --recipient keyid --output "%outputfile%" --overwrite remove