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

[文本处理] [已解决]批处理for截取有空格的文件名时为何出错?

本帖最后由 zfkzp 于 2011-7-22 15:12 编辑

今天想试一下用for做一下实验,结果第一个就出了叉子还让我折腾好久。
用for截取有空格的文件名是系统会提示找不到文件。
已知有同一目录下有两个文件,
c:\bathome.test
c:\bat heme.test

代码本按理说应该这么写:
  1. for /f "delims=" %%i in ('dir /b /a-d /s "*.test"') do echo %%i &exit /b
复制代码
,这竟然出了错。给出如下提示:
“系统找不到文件。”
具体情况请参看十五楼:传送
请高手解答。
1

评分人数

    • CrLf: 感谢给帖子标题标注[已解决]字样PB + 2
I Love Batch as love my life!

代码没有问题。

TOP

搞不懂你的那个带有空格的路径在for中放在哪个位置!~
没想到啊没想到,这竟然不懂。明晃晃金灿灿给出如下提示:
按理说,路径含有空格的需用双引号括起来,如果是在FOR集合中,需要用到usebackq选项。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

你的文件是.test,你让dir去找.zip,让人家dir情何以堪啊?
1

评分人数

    • CrLf: 乐于助人PB + 2

TOP

3# cjiabing


应该是括号内吧。
I Love Batch as love my life!

TOP

4# CUer


现在改过来了。
I Love Batch as love my life!

TOP

3# cjiabing

之前试过backuseQ了,系统同样提示不能有backuseQ。
I Love Batch as love my life!

TOP

5# zfkzp 学学FOR的usebackq吧:FOR/F的选项usebackq的用法
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

估计是路径问题,试试:
  1. for /f "delims=" %%i in ('dir /b /a-d /s "C:\*.test"') do echo %%i &exit /b
复制代码

TOP

8# cjiabing


感谢指点,我现在就在学,可是系统提示:“此时不应有usebackq”
I Love Batch as love my life!

TOP

9# CrLf
  1. for /f "delims=" %%i in ('dir /b /a-d /s "C:\*.test"') do echo %%i &exit /b
复制代码
嗯,我用这段在试一下。
I Love Batch as love my life!

TOP

10# zfkzp


你是怎么写的呢?for 命令的 /f 开关只能接受一条参数(其实是多个参数写成一条),需要同时使用多个参数时,需要把它们用双引号括起来使之被看成一条参数(好绕啊),比如这样:
  1. @echo off
  2. for /f "eol=p usebackq skip=1 tokens=* delims= " %%a in ("%~0") do echo %%a
  3. pause
复制代码

TOP

本帖最后由 cjiabing 于 2011-7-21 22:42 编辑

不懂你搞什么。你的代码根本不存在路径,只是命令,命令要使用单引号。如果使用了usebackq,则命令使用后引号:如果不得,把你的代码发上来!~
  1. for /f "usebackq delims=" %%i in (`dir /b /a-d /s *.txt`) do echo %%i
复制代码
晕,你发的命令都可以执行的啊!~
1

评分人数

    • CrLf: 乐于助人PB + 2
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

楼上正解,usebackq使用时,原来括号内标注命令的'要改为`

TOP

本帖最后由 zfkzp 于 2011-7-22 08:49 编辑

13# cjiabing

是这样的,我想改进一个自动给文件分类的批处理。简单点的代码,就是这样

为了方便大家,我给大家传了外链了图片过来。
  1. @echo off
  2. for /f "usebackq delims=" %%i in (`dir /b /a-d /s *.rar`) do if %%~zi GEQ 1024*1024 copy /y/z %%i e:\tools
  3. exit /b
复制代码



而C:\KuGou\Temp\下面却是有如下两个文件
复件 1.rar
haiducii914c4dc633fbd4cd429678a2c621ab2d.rar1

按照cjiabing版主的代码,
for /f "usebackq delims=" %%i in (`dir /b /a-d /s *.rar`) do echo %%i
执行结果却是下面这样
100% 已复制 已复制         1 个文件。
系统找不到指定的文件。

已复制的是“haiducii914c4dc633fbd4cd429678a2c621ab2d.rar1”
“复件 1.rar” 却没有复制过去


求解。
I Love Batch as love my life!

TOP

返回列表