Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将param传递给windows应用程序,而不使用expand环境变量值_Windows_Batch File_Environment Variables_Params - Fatal编程技术网

将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上测试