标题: [文件操作] 【已解决】批处理如何解决%*参数中带有英文逗号等特殊字符无法正确解析的问题? [打印本页]
作者: 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上传递的参数%*为- a,b,c.txt "sp ace.txt" "comma,sp ace.txt"
复制代码
test.bat- @echo off
- setlocal ENABLEDELAYEDEXPANSION
- for %%I in (%*) do (
- set /a count+=1
- set names=!names!"%%~nxI"
- )
- echo,%count%
- echo,%names%
- rem program %names%
- pause
复制代码
作者: /zhqsystem/zhq 时间: 2015-12-20 01:59
本帖最后由 /zhqsystem/zhq 于 2015-12-21 01:29 编辑
回复 1# nullptr
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('echo,%*') do (
- set "name_i=%%~i"
- set "name_i=!name_i:"=!"
- set "name_i=!name_i: %~d1=";"%~d1!"
- for %%j in ("!name_i!") do (
- for /f "delims=" %%k in ("%%~fj") do (
- rem:此处具体取值
- echo,%%k
- )
- )
- )
- 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://bbs.bathome.net/) |
Powered by Discuz! 7.2 |