批处理文件怎么判断有无参数下传

如果把被操作的文件直接拖到BAT文件上时,就可以直接调用传下的参数(就是文件名了),但如果直接运行BAT文件就没有这个参数了,就要做一个要用户输入文件名的,我想即可以直接... 如果把被操作的文件直接拖到BAT文件上时,就可以直接调用传下的参数(就是文件名了),但如果直接运行BAT文件就没有这个参数了,就要做一个要用户输入文件名的,我想即可以直接拖又可以手动输入文件名的,怎么实现,有谁写个代码看看 展开
 我来答
就烦条0o
2016-01-24 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46492
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部

批处理中%1 是表示传递的第一个参数,如果没带参数,则 %1 为空,肯定为没有参数,使用代码示例,如果有参数输出,如果没有参数跳转到结束,代码如下:
@echo off
if "%1"=="" goto :end
echo %1
:end
echo 退出

效果如下:

星月小木木
2016-01-15 · TA获得超过3.2万个赞
知道大有可为答主
回答量:2.4万
采纳率:0%
帮助的人:1亿
展开全部
%1 是表示传递的第一个参数,如果没带参数,则 %1 为空 ,对于写的代码而言,形同:
if not exit goto :sorry
当然是语法错误
下面第一句把%1为空的跳开就不会发生语法错误了:
if "%1"=="" echo 应该带参数运行&goto :sorry
if not exist %1 echo 找不到 %1 文件或文件夹&goto :sorry
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xxpinqz
推荐于2016-07-30 · TA获得超过1323个赞
知道小有建树答主
回答量:1055
采纳率:0%
帮助的人:1317万
展开全部
@echo off
if "%~1"=="" (set /p "filename=请输入文件名或拖动文件至此:") else set "filename=%~1"
更多追问追答
追问
好用,谢谢啊,顺便再问一下,%1和%~1有没有区别啊,谢谢了
追答
%~1会自动去除传递过来参数的""
因为文件带空格时系统会自动在前后加对""来识别,引用时要去除""
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式