Board logo

标题: [文件操作] 批处理如何解压缩含有空格的文件? [打印本页]

作者: snowsilent    时间: 2009-8-27 10:59     标题: 批处理如何解压缩含有空格的文件?

我想把.gz格式的文件全部解压缩成.txt格式的文件,但由于.gz文件名中含有空格,使得含有空格的文件名解压缩失败。应该如何解决呢?
(代码解释:先把所有.gz的文件名列表放到list.txt中,在d:\test1\allfile中找到列表中有的文件,解压缩到d:\test1\tmp中,以.txt格式保存)
  1. @echo unzip .gz files
  2. dir /b d:\test1\allfile\*.gz > d:\test1\tmp\list.txt
  3. for /f "%%a" in (d:\test1\tmp\list.txt) do (
  4. gzip -d -k < "d:\test1\allfile\%%a" > d:\test1\tmp\%%a.txt
  5. )
复制代码

作者: canyuexiaolang    时间: 2009-8-27 12:13

加引号.........
作者: keen    时间: 2009-8-27 12:30     标题: 回复 1楼 的帖子

改成这样试试:
  1. @echo unzip .gz files
  2. dir /b d:\test1\allfile\*.gz > d:\test1\tmp\list.txt
  3. for /f "delims=" %%a in (d:\test1\tmp\list.txt) do (
  4. gzip -d -k < "d:\test1\allfile\%%a" > "d:\test1\tmp\%%a.txt"
  5. )
复制代码

[ 本帖最后由 keen 于 2009-8-27 12:33 编辑 ]
作者: snowsilent    时间: 2009-8-27 14:09

谢谢楼上,可以了,不过接下来把所有.txt文件写入同一个.txt文件中又出错了,照着楼上的方法改了几次都不能用,麻烦再帮我看一下
  1. for /r d:\test1\tmp\ "d:\test1\tmp\%%i" in (*.txt) do (
  2. type "d:\test1\tmp\%%i" >> d:\test1\merge\origin.txt
  3. Rem @echo merging with %%i
复制代码

作者: keen    时间: 2009-8-27 17:31     标题: 回复 4楼 的帖子

这样试试:
  1. for /r d:\test1\tmp\ %%i in (*.txt) do (
  2.       type "%%i" >> d:\test1\merge\origin.txt
  3. )
复制代码

作者: snowsilent    时间: 2009-8-28 13:35

这样可以了,为什么多了一个路径就不行了呢?
作者: keen    时间: 2009-8-28 13:43     标题: 回复 6楼 的帖子

for中的变量%%i前不用加路径。
要想弄清楚原因,可以学习参考:
for语句从入门到精通http://bbs.bathome.net/thread-2189-1-1.html




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