找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26711|回复: 5

[文本处理] 批处理call子过程中如何调用传递过来的参数?

[复制链接]
发表于 2016-5-12 20:06:08 | 显示全部楼层 |阅读模式
本帖最后由 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
请按任意键继续. . .

评分

参与人数 1PB -3 收起 理由
pcl_test -3 未按版规发帖

查看全部评分

 楼主| 发表于 2016-5-12 20:07:37 | 显示全部楼层
我期望是rename xxx.cdt.bak xxx.cdt
xxx是我传进去的参数
发表于 2016-5-12 20:56:54 | 显示全部楼层
本帖最后由 /zhqsystem/zhq 于 2016-5-12 20:58 编辑

总觉得这么写有问题
if exist "%~1.cdt.bak"  (
rename "%~1.cdt.bak" "%~nx1.cdt"
)
你的%1到底是什么?
发表于 2016-5-13 08:07:17 | 显示全部楼层
把你的 %1% 改成 %1
 楼主| 发表于 2016-5-13 10:26:42 | 显示全部楼层
把你的 %1% 改成 %1
gawk 发表于 2016-5-13 08:07



正解!多谢!

引用传进来的参数用%1就可以了,我按照变量的方式应用就有问题。
 楼主| 发表于 2016-5-13 10:27:39 | 显示全部楼层
回复 3# /zhqsystem/zhq


    %1是传进来的参数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 17:40 , Processed in 0.018709 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表