![重命名包含非法字符的长文件名](https://linux22.com/image/1229950/%E9%87%8D%E5%91%BD%E5%90%8D%E5%8C%85%E5%90%AB%E9%9D%9E%E6%B3%95%E5%AD%97%E7%AC%A6%E7%9A%84%E9%95%BF%E6%96%87%E4%BB%B6%E5%90%8D.png)
我在 Windows 中有一个 2GB 的文件,它的文件名很长,FileTransfer.dll?Cmd=1&MN=1619353607&Dir=1&Mode=0&Off=0&TS=FA596160-1BFB-4113-9E10-B196243A73F3&CVN=5,0,0,32
我不知道它是如何得到这个文件名的(也许来自下载管理器)
现在,当我尝试重命名它时,它说
---------------------------
Error Renaming File or Folder
---------------------------
Cannot rename file: Select only one file to rename, or use MS-DOS wildcards (for example, *.txt) to rename a group of files with similar names.
---------------------------
OK
---------------------------
我如何重命名此文件?我无法以任何其他方式(如加载)使用此文件。
我使用的是 Windows XP Home(NTFS),我还没有使用过linux 到现在为止
编辑 :
dir /X
给我
E:\Downloads>dir /X
Volume in drive E is x
Volume Serial Number is c
Directory of E:\Downloads
02/04/2010 05:44 PM <DIR> .
02/04/2010 05:44 PM <DIR> ..
01/27/2010 09:12 PM 49,745 1.l
01/28/2010 12:09 AM 2,501,894,144 FileTransfer.dll?Cmd=1&MN=16
19353607&Dir=1&Mode=0&Off=0&TS=FA596160-1BFB-4113-9E10-B196243A73F3&CVN=5,0,0,32
01/28/2010 12:09 AM 3,138,664 wget-log.1
10/19/2009 02:46 AM 43,137,416 zapSetup_91_008_000_en.exe
4 File(s) 2,548,219,969 bytes
2 Dir(s) 80,069,509,120 bytes free
答案1
使用 DIR /X 找到文件的短名称,然后使用 REN 将短名称重命名为新名称。
答案2
我最近发现可以使用以下语法来处理 Windows 中的无效文件名:
\\.\C:\somedir\filename
这可用于删除或重命名有问题的文件,如以下示例所示:
DEL \\.\C:\test\LPT1
REN \\.\C:\test\LPT1 file.txt
测试表明,如果路径的第一部分是“\\?\”而不是“\\.\”,此语法也有效。
答案3
在许多情况下,最简单的方法是引用文件名。[*]
rename "long-file-name-here" new-short-file-name
引号可防止 shell 将奇怪的字符(?
和&
和其他字符)解释为特殊字符。(在 Windows CMD shell 中,?
是单字符通配符。引号告诉 CMD 不要这样解释。)
有时这种方法由于其他原因不起作用,您需要求助于上述其他技术之一。但这是首先要尝试的方法。
[*] Unix shell 更喜欢使用单引号 ( 'foo'
) 而不是双引号 ( "foo"
),以便完全避免 shell 解释。CMD shell 似乎更喜欢双引号。
答案4
您可以尝试将所有其他文件移出目录,然后从控制台窗口执行
e:
cd e:\Downloads
rename * <newname>
希望rename
命令的通配符扩展不会因意外字符而出现问题。您甚至可以尝试此操作,而无需使用稍微更精细的重命名命令来移动其他文件:
rename FileTran* <newname>
(如果您不熟悉命令行控制台窗口:可以cmd
通过 XP 的开始菜单上的运行命令来启动它,完成后输入exit
命令)