batch file代码来查找和重命名以空格结尾的所有文件?

我们在Windows 2008服务器上托pipeMacintosh文件。 他们有类似的文件

somegraphic.eps ._somegraphics.eps (hidden) 

很多时候,我们的用户会在文件中添加非标准字符,比如文件名尾部的项目符号和空格。 它允许他们添加字符,但不会让他们改变文件名,一旦他们点击进入。

两个问题:

  1. 在一个batch file中,如何获得以空格结尾的所有文件的列表?
  2. 在batch file中,如何批量重命名删除不需要的字符的所有文件?

对于这个问题:

  1. 你怎么能得到一个系统上的所有文件的列表,他们的修改时间,以XML或容易的数据导入格式?

讨论:

我尝试重命名一个dir / x文件名,但隐藏的属性似乎停止工作。

通常情况下,我做一个dir / b / s来获得一个完整的目录search在裸露的格式,但不包括修改时间。

在最后创build一个空格的文件:

 echo Foo > "\\?\c:\rcs\boo.txt " 

在修改date和裸露列表的batch file中列出系统中的文件:

 for /f "tokens=*" %%A in ('dir /s/b %target%') do @echo %%~tA,"%%~A" 

例如,包含“boo.txt”三个文件的目录如下所示:

 , "C:\rcs\boo.txt " 02/03/2011 17:48, "C:\rcs\foo1.txt" 02/03/2011 17:47, "C:\rcs\foo2.txt" 

请注意文件date如何丢失。 这可能是你的线索,文件名是非法的。

看看[ http://www.jam-software.com/freeware/%5D中的filelist.exe。 这个程序创build一个扩展的列表(更多的数据点),但不喜欢date等属性。

删除很容易,重命名更难。

以下工具将“boo.txt”重命名为boo.txt

http://wren.adoxa.cjb.net

 wren.exe boo~1.txt boo.txt 

照顾的文件名。

注意:W appears似乎有16位和32位版本 – 我用16位的一个来执行重命名,并被限制重命名为8.3文件名。 你应该能够解决这个问题。