如果这篇文章已经发布在其他地方,我非常抱歉,我已经搜索这个答案两天了,我的头好痛。几年前,我有一个由 Windows 7 制作的游戏目录的旧备份,我正在尝试恢复它,但在尝试写入磁盘时,备份被搞乱了。Windows 变得很奇怪,在每个文件(数十万个文件!)的扩展名前都放置了“space”(不是单词 space,而是空格键 space),现在这些文件与我当前的游戏目录混在一起了。由于空格字符(space 甚至是一个字符吗?),我的游戏无法读取文件。
我需要搜索带有空格的文件(无法进行任何特殊搜索,因为我不知道如何搜索包含“空格”的文件),然后如果可能的话,从所有受影响的文件的特定区域消除空格(必须是那个特定区域,因为许多文件中都有空格,但这是由于它们原来的措辞,即“ba room 56.xxx”,在 Windows 完成处理后变成“ba room 56 .xxx”。注意:上一个例子中 56 和“。”之间的空格。)
请帮忙?
答案1
概述
第 1 部分- 使用批量重命名实用程序重命名文件。
第 2 部分- 有关对文件进行分组以便于处理的建议。
第 3 部分- 搜索名称中扩展名之前带有空格的文件。
第 4 部分 - 将这些文件的列表导出为文本文件。
使用批量重命名实用程序
据我了解,你遇到了一些问题批量重命名实用程序。
假设您的描述是准确的(并且扩展名之前的最后一个字符只有一个或多个空格,例如“ba room 56 .xxx”),那么您可以使用该Trim
功能而Remove (5)
无需更改任何选项:
例如预览结果
要明确的是:
使用操作 → 全选(Ctrl+ A)
点击
Trim
中的复选框Remove (5)
。
您会注意到,只有要更改的名称才会以绿色显示。同样,这只会重命名文件,而不是文件夹。一旦满意,点击改名右下角的按钮。
如果需要,你可以重置整个重命名标准窗口(以防你一直在尝试其他选项或只是感到谨慎),使用操作 → 重置所有重命名条件(Ctrl+ T)。
包括子目录
批量重命名实用程序通常一次仅对单个根文件夹进行操作。但是,可以包含子目录:
例如子目录中的替换
您可以使用Filters (12)
主窗口的部分来包含这些文件夹。只需标记Subfolders
:
例如过滤选项
我还取消选中了Folders
以减少预览窗口中的视觉混乱(如前所述,使用Trim
不会影响文件夹)。选择适当的过滤选项后,使用全选,Trim
和改名如上。
使用空格对文件进行分组
对于您来说,批量重命名实用程序能够识别要修改的正确文件名,而无需采取其他操作(只需将其指向包含这些文件的正确目录即可)。不符合您的标准的文件将被自动忽略。
但是,正如您所指出的,文件数量庞大,批量重命名实用程序可能难以一次性处理所有文件。作为建议,我可能会考虑将文件分组到临时目录中,每个目录大约有 50-100 个文件。
虽然我确实建议使用批处理文件来帮助您,但它不会按特定数字对文件进行分组。如果您愿意,您仍然必须创建新目录并手动执行该部分。同样,它要求您一次移动并运行一个文件夹。
批量文件排序
为了帮助简化处理如此大量文件的任务,您可以使用批处理文件对扩展名前包含空格的文件进行排序:
在 Windows 记事本中打开一个新文档并复制以下行:
if not exist %~dp0tempspace md %~dp0tempspace move /-y %~dp0"* .*" %~dp0tempspace pause
选择另存为并在 下
Save as type
选择All Files (*.*)
。.bat
通过键入例如将文档扩展名更改为(Windows 批处理文件)查找空间。点击节省。
如果操作正确,文件名应该更改为包含.bat
扩展名,并且新文件的图标应该更改为资源管理器中带有齿轮的框(而不是一张纸)。
将此批处理文件放在您认为可能包含扩展名前带空格的文件的任何文件夹中,然后双击运行它。任何匹配的文件都将移动到名为 eg 的新文件夹中临时空间. 根据需要对其他文件夹和子目录重复此操作,每次移动批处理文件。
批处理文件说明
此批处理文件没有搜索子目录。
它移动全部将匹配的文件复制到给定的临时目录。
您可以替换例如临时空间可以使用任意文件夹名称,但应避免使用空格。同样,请注意
%~dp0
文件夹名称之间不要有空格。"* .*"
您可以使用特定扩展名(例如),而不是名称前带有空格的所有文件("* .xxx"
)。再次注意搜索条件之间没有空格%~dp0
,以及第一个星号和句点之间没有空格。虽然这不适用于保存新文件,但您可能必须在 Windows 中取消隐藏扩展名才能将现有文本文件更改为
.bat
扩展名。
搜索文件
由于提前知道哪些文件在扩展名之前包含空格可能会有帮助(但不一定需要),这里有一些关于该主题的想法......
有大量实用程序可以帮助您。也就是说,对于原生 Windows 解决方案,有寻找命令行实用程序,但我不相信它具有您需要的功能。同样,我从来都不喜欢 Windows Search,并且我对它在您的情况下的帮助表示怀疑。
作为一个简单的替代方案,我推荐 Mythicsoft 的特工搜捕。这是一个免费的文件搜索程序,你可以在这里下载。请注意,您目前不必担心以家庭用户身份“注册”该程序(无论如何它都会运行)。
安装后,打开 Agent Ransack 并在主搜索窗口中输入以下内容:
* .*
在字段中输入File name
搜索内容,以查找扩展名前带有一个或多个前导空格的所有文件。与上面的批处理文件一样,请记住第一个星号和句点之间的空格。当然,您也可以再次指定扩展名,例如* .xxx*
。确保正确的根文件夹(例如,您的游戏文件夹)出现在
Look in
字段中。如果您想进行全面搜索,您应该检查
Search subfolders
。
按Start
右侧的按钮开始搜索文件。搜索完成后,您应该会看到类似以下的结果:
例如搜索结果
虽然我的示例图像仅显示一个目录,但您的实际结果将显示包括子目录在内的完整路径(假设您标记了Search subfolders
)。
导出文件列表
要获取 Agent Ransack 搜索结果列表作为文本文件,您可以使用以下方式导出它们文件→导出结果...或者使用Export results
Agent Ransack 工具栏上的图标:
例如导出结果
在里面出口窗口,确保通过以下方式将结果保存为文本文件:
选择
File
。使用适当的文件名设置导出路径。
选择“文本文件”
Format
。确保
Save results for: All files
已标记。
点击出口完成后,单击右下角的按钮。
例如导出窗口
使用 Notepad++ 清理
不幸的是,除了完整路径和文件名之外,导出的列表还包含您可能不需要的信息,例如:
C:\path\to\gamefiles\ba room 56 .xxx 1 KB XXX File 2/11/2018 11:56:11 PM [...]
为了保留路径/文件信息并丢弃其余信息,我们可以使用名为记事本++(不要与常规 Windows 记事本混淆)。只需在下载页面上选择 32 位或 64 位安装程序即可。
安装完成后,打开例如搜索结果.txt在 Notepad++ 中打开文件。从菜单中选择搜索 → 替换...(Ctrl+ H)调出代替对话。
然后您可以使用正则表达式(一种特殊的搜索模式)突出显示您不需要的信息。在字段中输入以下内容Find what :
:
\s\d+\s[A-Z].+$
将该Replace with :
字段留空。确保Match case
和Wrap around
选项Regular expression
都已标记。该. matches newline
选项应未选中:
例如 Notepad++ 替换对话框
准备好后,点击全部替换在右侧。然后您可以保存已编辑的文件(假设一切看起来都正确)。
列表编辑说明
请记住,我建议删除数据的正则表达式可能需要进行一些调整,但它应该正确处理 Agent Ransack 生成的文本。如果您遇到任何问题,请告诉我。
此编辑列表可以作为其他脚本的输入。如果您希望以这种方式使用它,最好删除所有空白行。您可以手动执行此操作,或者 Notepad++ 可以为您执行此操作编辑 → 行操作 → 删除空行。
删除空行还可以避免引用仅由空格组成的行(通常不可见)的问题(假设您希望使用下面的正则表达式来引用行)。
在大多数情况下,此列表中的路径不需要加引号(即使列表中的路径包含空格)。但是,如果您确实发现出于某种原因需要引用列表中的每个路径,也可以使用 Notepad++ 来实现这一点。只需打开代替再次使用正则表达式对话框(使用与上面相同的设置),但
(.+)
在Find what :
字段和字段"\1"
中使用Replace with :
: