一个更高级的例子:
⍟ 无限参数。
⍟ 存在于文件系统上(file 或 directory?)或通用的 string。
⍟指定是否为文件
⍟指定是一个目录
⍟ no 扩展,可以在旧脚本中使用!
⍟ 最小代码☺
@echo 关闭
:环形
::---------------------------- 有论据?
如果 ["%~1"]==[""] (
回声完成。
转到结束
)
::---------------------------- 参数存在吗?
如果不存在 %~s1 (
回声不存在
) 别的 (
回声存在
如果存在 %~s1\NUL (
echo 是一个目录
) 别的 (
回声是一个文件
)
)
::----------------------------
转移
转到循环
:结尾
暂停
✨其他的东西..✨
■ 在 %~1 中 - ~ 删除任何包装 " 或 '。
■ 在%~s1 - s 使路径成为DOS 8.3 naming,这是在检查内容时避免文件名中的空格的好方法(这样就不需要用更多@987654333 包装资源@s.
■ ["%~1"]==[""]“不能确定”参数是文件/目录还是只是一个通用字符串,所以表达式使用括号和原始未修改的%1(只是没有" 包装, 如果有的话..)
如果没有参数表明我们是否使用了shift,并且 arg-list 指针已通过最后一个,则表达式将被评估为 [""]==[""]。
■ 在不使用更多技巧的情况下,您可以做到尽可能具体(即使在 windows-95 的批处理脚本中也可以使用...)
■ 执行示例
另存为identifier.cmd
它可以识别无限的参数(通常你被限制为%1-%9),只要记住用引号括起来,或者使用 8.3 命名,或者拖放它们(它会自动执行以上)。
这允许您运行以下命令:
⓵identifier.cmd c:\windows
并得到
存在
是一个目录
完毕
⓶identifier.cmd "c:\Program Files (x86)\Microsoft Office\OFFICE11\WINWORD.EXE"
并得到
存在
是一个文件
完毕
⓷和多个参数(当然这是全部..)
identifier.cmd c:\windows\system32 c:\hiberfil.sys "c:\pagefile.sys" hello-world
得到
存在
是一个目录
存在
是一个文件
存在
是一个文件
不存在
完毕。
自然会复杂得多,
但好的例子应该总是简单而最少的。 :)
希望它可以帮助任何人:)
在此发布:CMD Ninja - Unlimited Arguments Processing, Identifying If Exist In File-System, Identifying If File Or Directory
这是一个工作示例,它获取任意数量的 APK 文件(Android 应用程序)并通过调试控制台 (ADB.exe) 将它们安装在您的设备上:
Make The Previous Post A Mass APK Installer That Does Not Uses ADB Install-Multi Syntax