|
huzixuan
高级用户
   
积分 537
发帖 219
注册 2006-10-31 来自 芜湖
状态 离线
|
『楼 主』:
无法删除文件 (有空格) 解决了
@echo off
if not "%1"=="" (
del "%1"
pause
) else (
echo.
echo 请拖入准备删除的文件到这个BAT
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo.
echo 注意: 文件名中不能有空格!!
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo.
echo.
pause
)
”
帮忙~~转换一下BAT的效果~~
我写了一个BAT,把需要删除的文件拖到这个BAT文件上,就会自动删除,如果双击这个BAT文件,会有帮助。但是我想要成这样的效果:
打开这个BAT文件,有帮助显示,然后再拖待删除的文件到这个BAT窗口上,然后再删除。。。不知道怎么修改代码。。
“
经测试,以上代码在删除 有 空格的路径或文件名 时,会出错。
并且不知道如何才能删除 有 空格的路径或文件名 ......
@echo off
if not "%~1"=="" (
del %1
pause
) else (
echo.
echo 请拖入准备删除的文件到这个BAT
echo.
pause
)
感谢大家的帮助
[ Last edited by huzixuan on 2007-1-31 at 03:55 AM ]
|

江湖远
碧空长
路茫茫
一个人漫无目的的奔跑,风,刺骨的冷.... |
|
2007-1-31 00:10 |
|
|
NaturalJ0
银牌会员
    
积分 1181
发帖 533
注册 2006-8-14
状态 离线
|
『第
2 楼』:
用引号,像这样。
"C:\Documents and Settings\J\桌面\apploc.msi"
|
|
2007-1-31 00:15 |
|
|
electronixtar
铂金会员
      
积分 7493
发帖 2672
注册 2005-9-2
状态 离线
|
『第
3 楼』:
如果没记错的话
if not "%1"==""
改成
if not [%1]==[]
|

C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>" |
|
2007-1-31 00:25 |
|
|
NaturalJ0
银牌会员
    
积分 1181
发帖 533
注册 2006-8-14
状态 离线
|
『第
4 楼』:
我在上面回的不对,改成这样。
if not "%~1"==""
|
|
2007-1-31 00:29 |
|
|
huzixuan
高级用户
   
积分 537
发帖 219
注册 2006-10-31 来自 芜湖
状态 离线
|
『第
5 楼』:
@echo off
if not [%1]==[] (
del "%1"
pause
) else (
echo.
echo 请拖入准备删除的文件到这个BAT
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo.
echo 注意: 文件名中不能有空格!!
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo.
echo.
pause
)
还是不行哦
|

江湖远
碧空长
路茫茫
一个人漫无目的的奔跑,风,刺骨的冷.... |
|
2007-1-31 00:38 |
|
|
redtek
金牌会员
     
积分 2902
发帖 1147
注册 2006-9-21
状态 离线
|
『第
6 楼』:
兄这条命令 del "%1" 本意中是正确的~:)
但是,将一个文件托入你的批处理时,这个批处理所获得的 %1 参数(就是被你托进来的文件名)是被系统加上引号的。
所以,当你的 del "%1" 再遇上好心的 Windows 系统默认还要获得的 %1 再加一层引号,就形成了 del ""要被删除的文件名"",自然就出错了:)
关于含有空格的路径与短文件名路径以及与兄提及的相关内容,详见 For /? 。
) 如果发现这样的问题?
不需要经验,只需要以下面原理测试一下,就可以一应百的解决类似问题或是发现此类问题(解决问题的方法和过程):
(在桌面上运行)
@echo off
echo %1
echo "%1"
echo %~s1
pause 运行时对比一下就了解它们的特性了~:)
[ Last edited by redtek on 2007-1-30 at 12:08 PM ]
|

Redtek,一个永远在网上流浪的人……
_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._ |
|
2007-1-31 01:04 |
|
|
redtek
金牌会员
     
积分 2902
发帖 1147
注册 2006-9-21
状态 离线
|
『第
7 楼』:
) 分析为什么 DEL ""含有空格路径的文件名或是含有空格的文件名"" 会发生 “找不到文件” 的错误?
看下面例子:
Quote: | C:\TEMP>DIR "ABC 123
驱动器 C 中的卷是 DISK-C
卷的序列号是 4089-CA39
C:\TEMP\ABC 123 的目录
2007-01-30 12:14 <DIR> .
2007-01-30 12:14 <DIR> ..
2007-01-30 12:13 3 DEMO 123.TXT
1 个文件 3 字节
2 个目录 3,170,394,112 可用字节
C:\TEMP>DEL ""\TEMP\ABC 123\DEMO 123.TXT""
系统找不到指定的文件。
C:\TEMP>CD "ABC 123
(看下面:我要删的是 DEMO 123.TXT 这个文件,但由于用了双层引号括起了它们,所以出错了)
C:\TEMP\ABC 123>DEL ""DEMO 123.TXT""
找不到 C:\TEMP\ABC 123\DEMO
(上面显示找不到文件……)
(在我们理解中,被双层引号引起的文件名好象是正确的。--其实是错误的)
(在我们看来,这就象是理解中的: < < 含有空格的文件名 > > )
(但在Windows看来, "" 左边这两个引号就是一对(不管中间有没有字符),所以右边那些含有空格的文件名或路径当然相当于没括引号了)
(即,相当于 "这个引号中没有任何字符"ABC 123"这个引号中没有任何字符" 这样的格式了)
(所以,就相当于给 Del 提供的含有空格路径或是含有空格的文件名有一部分是没有被引号括起来的这样的原理)
C:\TEMP\ABC 123> |
|
所以,错误是这样发生的:)
根据上面出错的原理,所以下面操作是正确的:
Quote: | C:\TEMP\ABC 123 的目录
2007-01-30 12:14 <DIR> .
2007-01-30 12:14 <DIR> ..
2007-01-30 12:13 3 DEMO 123.TXT
1 个文件 3 字节
2 个目录 3,170,394,112 可用字节
C:\TEMP\ABC 123>del ""DEM"O 12""3".TXT
C:\TEMP\ABC 123>DIR
驱动器 C 中的卷是 DISK-C
卷的序列号是 4089-CA39
C:\TEMP\ABC 123 的目录
2007-01-30 12:23 <DIR> .
2007-01-30 12:23 <DIR> ..
0 个文件 0 字节
2 个目录 3,170,394,112 可用字节 |
|
【 正文检索主题词: 含有空格 含有空格的路径 空格路径 引号 %~sI 短名 】
[ Last edited by redtek on 2007-1-30 at 12:29 PM ]
|

Redtek,一个永远在网上流浪的人……
_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._ |
|
2007-1-31 01:21 |
|
|
huzixuan
高级用户
   
积分 537
发帖 219
注册 2006-10-31 来自 芜湖
状态 离线
|
『第
8 楼』:
哦!感谢 redtek 兄 的帮助.
但是看完过后,还是不晓得怎么写..........
|

江湖远
碧空长
路茫茫
一个人漫无目的的奔跑,风,刺骨的冷.... |
|
2007-1-31 01:27 |
|
|
mygoldnet
初级用户
 
积分 90
发帖 32
注册 2007-1-14
状态 离线
|
『第
9 楼』:
哈哈
直接试试
@echo off
del %1
|
|
2007-1-31 01:32 |
|
|
NaturalJ0
银牌会员
    
积分 1181
发帖 533
注册 2006-8-14
状态 离线
|
『第
10 楼』:
@echo off
if not "%~1"=="" (
del %1
pause
) else (
echo.
echo 请拖入准备删除的文件到这个BAT
echo.
pause
)
|
|
2007-1-31 02:41 |
|
|
huzixuan
高级用户
   
积分 537
发帖 219
注册 2006-10-31 来自 芜湖
状态 离线
|
『第
11 楼』:
今天无事.忽又想起这个问题.
转回又看了一遍,竟觉得是 恍然大悟,实在是感谢兄门的帮助.
尤其是 redtek 兄的详解.
|

江湖远
碧空长
路茫茫
一个人漫无目的的奔跑,风,刺骨的冷.... |
|
2007-2-8 02:10 |
|
|
gne3
高级用户
    DOS学徒
积分 526
发帖 252
注册 2007-2-12
状态 离线
|
|
2007-2-14 01:30 |
|