Board logo

标题: [文本处理] 批处理call子过程中如何调用传递过来的参数? [打印本页]

作者: xidwong    时间: 2016-5-12 20:06     标题: 批处理call子过程中如何调用传递过来的参数?

本帖最后由 pcl_test 于 2016-5-13 20:08 编辑

我的批处理脚本:
@cd /d %~dp0

@call :del_result test_mr
@call :del_result test20caps

pause

:del_result
if exist %1%.cdt.bak (
    echo =====del result file of %1%=====
    del %1%.cdt
    del %1%.idx
    rename %1%.cdt.bak %1%.cdt
)

执行后:(见最后一个rename命令,为什么展开后成这样?)

D:\MyProg\IDP1.4_20160510\log>call :del_result test_mr

D:\MyProg\IDP1.4_20160510\log>if exist test_mr.cdt.bak (
echo =====del result file of test_mr=====
del test_mr.cdt
del test_mr.idx
rename test_mr1.cdt
)

D:\MyProg\IDP1.4_20160510\log>call :del_result test20caps

D:\MyProg\IDP1.4_20160510\log>if exist test20caps.cdt.bak (
echo =====del result file of test20caps=====
del test20caps.cdt
del test20caps.idx
rename test20caps1.cdt
)
=====del result file of test20caps=====
找不到 D:\MyProg\IDP1.4_20160510\log\test20caps.cdt
找不到 D:\MyProg\IDP1.4_20160510\log\test20caps.idx
命令语法不正确。

D:\MyProg\IDP1.4_20160510\log>pause
请按任意键继续. . .
作者: xidwong    时间: 2016-5-12 20:07

我期望是rename xxx.cdt.bak xxx.cdt
xxx是我传进去的参数
作者: /zhqsystem/zhq    时间: 2016-5-12 20:56

本帖最后由 /zhqsystem/zhq 于 2016-5-12 20:58 编辑

总觉得这么写有问题
if exist "%~1.cdt.bak"  (
rename "%~1.cdt.bak" "%~nx1.cdt"
)
你的%1到底是什么?
作者: gawk    时间: 2016-5-13 08:07

把你的 %1% 改成 %1
作者: xidwong    时间: 2016-5-13 10:26

把你的 %1% 改成 %1
gawk 发表于 2016-5-13 08:07



正解!多谢!

引用传进来的参数用%1就可以了,我按照变量的方式应用就有问题。
作者: xidwong    时间: 2016-5-13 10:27

回复 3# /zhqsystem/zhq


    %1是传进来的参数




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2