中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-25 03:11
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 怎样才能显示含特殊字符文件名 查看 3,367 回复 7
楼 主 怎样才能显示含特殊字符文件名 发表于 2010-09-18 23:54 ·  中国 广东 韶关 电信
高级用户
★★★
CMD感染者
积分 691
发帖 383
注册 2008-05-23 00:38
18年会员
UID 119451
性别 男
状态 离线
一个含特殊字符的文件,如: &^file.txt,把它拖到一批处理的图标,如何使此P能打印出文件名?
2 发表于 2010-09-19 12:34 ·  中国 北京 中电华通通信有限公司
初级用户
积分 49
发帖 43
注册 2007-01-20 03:28
19年会员
UID 77088
性别 男
状态 离线
理论上是无法实现的,因为你拖动的文件名本身包含&符号,如果不用双引号括起来就会把脚本当作2个命令执行。
但是可以用命令行方式实现,脚本如下,执行方式: show.bat "c:\&^file.txt"

@echo off
echo %1
3 发表于 2010-09-22 00:53 ·  中国 广东 广州 电信
高级用户
★★★
CMD感染者
积分 691
发帖 383
注册 2008-05-23 00:38
18年会员
UID 119451
性别 男
状态 离线
谢谢解答,希望能解决。。。
4 发表于 2010-12-27 18:43 ·  中国 广东 韶关 电信
高级用户
★★★
CMD感染者
积分 691
发帖 383
注册 2008-05-23 00:38
18年会员
UID 119451
性别 男
状态 离线
纠结啊。。。
5 发表于 2010-12-27 19:54 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
楼主可试试这个代码看看合不合你的要求~~
@echo off&SETLOCAL ENABLEDELAYEDEXPANSION
set "fn=%~1
echo !fn!
pause
精简
=> 个人网志
6 发表于 2010-12-30 20:01 ·  中国 广东 韶关 电信
高级用户
★★★
CMD感染者
积分 691
发帖 383
注册 2008-05-23 00:38
18年会员
UID 119451
性别 男
状态 离线
还是无法显示
7 发表于 2011-01-01 21:23 ·  中国 台湾 中华电信(HiNet)
初级用户
积分 109
发帖 30
注册 2007-09-05 14:27
18年会员
UID 96621
性别 男
状态 离线

set "wfiles=%cmdcmdline:"=%"
call set "wfiles=%%wfiles:*%~d0=%%"
call set "wfiles=%%wfiles:*%~d1=%%"
call set "wfiles=%%wfiles: %~d1=" "%~d1%%"
set wfiles="%~d1%wfiles%"

for %%a in (%wfiles%) do @echo %%~nxa
pause


有些文件名,如:&(.txt
整个路径必须带有空格,才能显示
如:C:\A BC\DEF\&(.txt
C:\ABC\D EF\&(.txt
C:\ABC\DEF\G &(.txt
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
radem +8 2011-01-03 15:33
8 发表于 2011-01-03 15:33 ·  中国 广东 韶关 电信
高级用户
★★★
CMD感染者
积分 691
发帖 383
注册 2008-05-23 00:38
18年会员
UID 119451
性别 男
状态 离线
仅以余最高的评分感谢楼上的答复!
论坛跳转: