[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 【已解决】批处理如何解决%*参数中带有英文逗号等特殊字符无法正确解析的问题?

本帖最后由 nullptr 于 2015-12-21 11:48 编辑

目的:选中若干个文件拖到test.bat上,显示文件个数,然后文件路径排序后传给另一个程序,即变量names存储 "文件名1" "文件名2" 等等

问题1:当文件名含有逗号时,如"a,b,c.txt",由于传参时没有自动加上引号,导致被当成3个文件,请问如何处理,需要考虑文件名含空格自动加引号的情况,见补充
问题2:参数排序有没有什么简便办法
先谢谢了

补充:把"a,b,c.txt" "sp ace.txt" "comma,sp ace.txt" 拖到test.bat上传递的参数%*为
  1. a,b,c.txt "sp ace.txt" "comma,sp ace.txt"
复制代码
test.bat
  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. for %%I in (%*) do (
  4.     set /a count+=1
  5.     set names=!names!"%%~nxI"
  6. )
  7. echo,%count%
  8. echo,%names%
  9. rem program %names%
  10. pause
复制代码
1

评分人数

    • pcl_test: 勿发笼统、无意义的标题PB -2

回复 3# nullptr
2楼已更新
1

评分人数

这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

回复  nullptr
/zhqsystem/zhq 发表于 2015-12-20 01:59

谢谢,不过需要考虑文件名含空格会自动加引号的情况,见主楼补充部分

TOP

本帖最后由 /zhqsystem/zhq 于 2015-12-21 01:29 编辑

回复 1# nullptr
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('echo,%*') do (
  3. set "name_i=%%~i"
  4. set "name_i=!name_i:"=!"
  5. set "name_i=!name_i: %~d1=";"%~d1!"
  6. for %%j in ("!name_i!") do (
  7.   for /f "delims=" %%k in ("%%~fj") do (
  8.    rem:此处具体取值
  9.    echo,%%k
  10.   )
  11. )
  12. )
  13. pause
复制代码
1

评分人数

这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

返回列表