将param传递给windows应用程序,而不使用expand环境变量值
我的应用程序接受一些参数,我使用这些参数对数据库执行查询,然后将检索到的数据导出到文件中。 所有这些都可以正常工作,但当我传递特殊参数(如将param传递给windows应用程序,而不使用expand环境变量值,windows,batch-file,environment-variables,params,Windows,Batch File,Environment Variables,Params,我的应用程序接受一些参数,我使用这些参数对数据库执行查询,然后将检索到的数据导出到文件中。 所有这些都可以正常工作,但当我传递特殊参数(如%temp%时,参数值将扩展为环境变量值:C:\Users\Andrea\AppData\Local\temp) 这种行为可以通过简单的测试重现。bat脚本: echo %1 发射 test.bat %temp1% 结果是: %temp1% C:\Users\Andrea\AppData\Local\Temp "PM:C:\Users\Andrea\
%temp%
时,参数值将扩展为环境变量值:C:\Users\Andrea\AppData\Local\temp
)
这种行为可以通过简单的测试重现。bat
脚本:
echo %1
发射
test.bat %temp1%
结果是:
%temp1%
C:\Users\Andrea\AppData\Local\Temp
"PM:C:\Users\Andrea\AppData\Local\Temp"
但启动:
test.bat %temp%
结果是:
%temp1%
C:\Users\Andrea\AppData\Local\Temp
"PM:C:\Users\Andrea\AppData\Local\Temp"
如果对%temp%使用引号或前缀,则结果相同
test.bat "PM:%temp%"
结果是:
%temp1%
C:\Users\Andrea\AppData\Local\Temp
"PM:C:\Users\Andrea\AppData\Local\Temp"
有一种方法可以在不扩展os环境变量的情况下使用此参数?谢谢@HansPassant,我已经尝试了此解决方案,但我需要引用参数(用于处理空格字符):这样
“^%temp^%”
返回^%temp^%
而不是%temp%
而是%temp%”
已展开。如果test.bat是@echo%~1
,则test.bat“^%temp^%”
显示%temp%
。在Win 8.1上测试