
PS C:\Users\x\Desktop> type .\test.bat @echo all : %* @echo arg1 : %1 @echo arg2 : %2 PS C:\Users\x\Desktop> .\test.bat "aaa=bbb,ccc" "ddd;eee" all : aaa=bbb,ccc ddd;eee arg1 : aaa arg2 : bbb 切到 win 去玩了下脚本,发现参数里带等号也会直接被解析,请问这种情况,怎么直接传进去一个带等号的字符串不被解析
或者我应该怎么取参数才是正确的
1 Rache1 2022-07-18 11:26:39 +08:00 |
3 AoEiuV020CN 2022-07-18 11:31:10 +08:00 |
4 Rache1 2022-07-18 11:37:42 +08:00 这样就可以 start-process "cmd.exe" '/c .\xxx.bat "aaa=bbb,ccc" "ddd;eee"' -Wait -NoNewWindow |
5 metamask OP |
6 Rache1 2022-07-18 11:42:11 +08:00 或者在外面再包一层单引号 .\xxx.bat '"aaa=bbb,ccc"' '"ddd;eee"' |
8 ysc3839 2022-07-18 11:53:02 +08:00 这里的问题应该是 PowerShell 把引号当成字符串了,传递给 cmd 的参数中不包含引号,cmd 对包含等号但不含引号的参数又进行了某些处理。 另外还想吐槽,Windows 启动新进程的命令行参数是只能传递一个字符串的,而 Unix 能传递字符串数组。因此在 Windows 下有的时候传递参数很麻烦,尤其是在不同 shell 中多层传递的情况,你得按照目标程序的解析规则 escape 好,而 Unix 则可以把解析好的字符串数组直接传过去。 |
9 cpstar 2022-07-18 11:53:35 +08:00 powershell 里会各种拆分,不仅仅是等号,还有逗号、分号。你可以试试 arg3\4\5\6 就知道了。 |
10 metamask OP |
11 ColorfulBoar 2022-07-18 12:37:00 +08:00 |
12 abvatous 2022-07-18 13:44:47 +08:00 我歪个楼 op 你这个帖子为什么打开有背景图的啊?还是说是 windows 节点的? |
14 ipcjs 2022-07-19 02:02:22 +08:00 Windows 也可以写 sh 脚本呀,为什么要想不开写 bat/powershell |