%1出现2个值
bat吧
全部回复
仅看楼主
level 1
正常的%1是a.txt
但是,在某个操作后,%1变成 a.txt a.txt
连续两个a.txt了
怎么取回正常的值呢
2019年11月16日 10点11分 1
level 13
首先你得明白,%1真正的含义是第一个参数,一旦你启动某个批处理或者调用某个批处理标签的时候%1就会跟着改变。你可以把%1作为变量保存起来。如果需要在别的地方使用:
1.用call传参(推荐)
2.用文本缓存起来
3.保存为环境变量(不推荐)
2019年11月16日 11点11分 2
我有用到ShellExecute,然后就不正常了。 脚本在楼下
2019年11月16日 11点11分
level 1
这个提权脚本,最后的一行%1就是不正常
cd %~dp0
echo %1 %~nx1
pause
set var=%1
echo %var% ;能看到正常值
pause
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
goto UACPrompt
) else (goto gotAdmin)
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~f0", %1, "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" (del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
Pushd %~dp0
echo %1 ;这里%1不正常了
pause
2019年11月16日 11点11分 3
我说了,%1是第一个参数,你都没传参%1就肯定是空的啊!要是想获取批处理本身的文件名的话用%0,%0才是表示本体。
2019年11月16日 12点11分
@皇叔有异议 有传参,我会拖一个文本文件到这个bat文件上。
2019年11月16日 12点11分
@皇叔有异议 %1到了最后一个echo才不正常。
2019年11月16日 12点11分
@大树据世界 但是你exit了,所以原先的参数没了。一旦你启动某个批处理或者调用某个批处理标签的时候参数就会跟着改变。
2019年11月16日 12点11分
1