Board logo

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

作者: nullptr    时间: 2015-12-19 21:52     标题: 【已解决】批处理如何解决%*参数中带有英文逗号等特殊字符无法正确解析的问题?

本帖最后由 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
复制代码

作者: /zhqsystem/zhq    时间: 2015-12-20 01:59

本帖最后由 /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
复制代码

作者: nullptr    时间: 2015-12-20 09:39

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

谢谢,不过需要考虑文件名含空格会自动加引号的情况,见主楼补充部分
作者: /zhqsystem/zhq    时间: 2015-12-21 01:29

回复 3# nullptr
2楼已更新




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