我们在 Windows 2008 服务器上托管 Macintosh 文件。它们包含以下文件
somegraphic.eps
._somegraphics.eps (hidden)
很多时候,我们的用户会在文件中添加非标准字符,例如文件名末尾的项目符号和空格。它允许他们添加字符,但一旦他们按下 Enter 键,它就不会让他们更改文件名。
两个问题:
- 在批处理文件中,如何获取以空格结尾的所有文件的列表?
- 在批处理文件中,如何批量重命名所有文件并删除不需要的字符?
对于这个问题:
- 如何获取系统中所有文件的列表、它们的修改时间以及 XML 或易于数据导入的格式?
讨论:
我尝试使用 dir/x 文件名重命名,但隐藏属性似乎阻止了该操作。
通常,我会执行 dir/b/s 来以裸格式进行完整的目录搜索,但它不包括修改时间。
答案1
创建一个文件,文件末尾有一个空格:
echo Foo > "\\?\c:\rcs\boo.txt "
在批处理文件中列出系统上的文件,并附上修改日期和裸列表:
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"
注意文件日期缺失。这可能说明文件名不合法。
查看 filelist.exe 中的 [http://www.jam-software.com/freeware/]。该程序创建了一个扩展列表(更多数据点),但不会拒绝日期等属性。
删除很容易,重命名很难。
以下工具将“boo.txt”重命名为boo.txt
wren.exe boo~1.txt boo.txt
处理文件名。
注意:Wren 似乎有 16 位和 32 位版本 - 我使用 16 位版本执行重命名,并且被限制将其重命名为 8.3 文件名。您应该能够解决这个问题。