batch-file - 通过在文件中查找字符串来重命名文件
问题描述
我正在尝试根据文件中的字符串重命名 2000 个 txt 文件。我一直在查看这些链接,但完全不知道从哪里开始。
根据内容中的多个字符串重命名文本文件 sublime text- "list lines contains 'find' string
在txt 文件的第56行,字符串将始终显示为: A30,765,0,1,1,2,N,"4596"
在txt 文件的第66行,字符串将始终显示为: B60,867,0,3,3,8,220,N,"7731853555"
我想将所有文件批量重命名为引号中的任何内容。因此,对于此示例,我希望将文件名重命名为:
4596 7731853555.txt
我很感激我能得到的任何帮助。提前致谢。
问候,汤姆
解决方案
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
SET "outfile=%destdir%\outfile.txt"
(
FOR /f "delims=" %%a IN (
'dir /b /a-d "%sourcedir%\*.txt" '
) DO (
SET "filename=%%a"
FOR /f "tokens=1*delims=[]" %%h IN ('find /v /n "" "%sourcedir%\%%a"') DO (
IF "%%h"=="56" SET "first=%%i"
IF "%%h"=="66" SET "second=%%i"&CALL :rentxt
)
)
)>"%outfile%"
GOTO :EOF
:rentxt
FOR %%p IN (%first%) DO SET "part1=%%~p"
FOR %%p IN (%second%) DO SET "part2=%%~p"
ECHO REN "%sourcedir%\%filename%" "%part1% %part2%.txt"
GOTO :eof
您将需要更改设置sourcedir
以destdir
适应您的情况。
生成定义为 %outfile% 的文件
嗯 - 我很无聊,所以几分钟的轻松...
为了方便起见,我将目录和文件的名称设置为变量 - 以测试我的u:
驱动器上的过程。
如所写,代码应生成它打算在命名为 的文件中执行的重命名命令列表outfile
。这使您可以检查文件以确定文件中的数据是否存在任何错误(使得第 56/66 行不遵循所描述的形式)而不采取行动。
要在测试准确性完成后实际重命名ECHO
文件,只需删除该行中的关键字ECHO REN...
。这将执行实际的重命名,而不是简单地报告它。该报告随后无关紧要,因此可以将(
之前的单行for...%%a...
与该)>"%outfile%"
行一起删除。
首先,for...%%a
执行*.txt
源目录中文件的目录列表,并将找到的文件名依次分配给%%a
. 和开关产生一种基本(仅名称)格式并分别抑制找到的目录名称/b
。/a-d
find
搜索文件中不/v
匹配的行(将是每一行 - 甚至是空行)并在方括号内对行进行编号。读取输出的每一行,使用和作为分隔符,因此行号显示为第一个“标记” ,而行内容显示为第二个标记 ( )。""
/n
for/f
find
[
]
%%h
%%i
然后选择第 56 行和第 66 行分成单独的变量,并注意其中filename
包含土豆。
当找到第 66 行时,我们调用子程序分别处理第56 行和第 66 行中:rentxt
的字符串。由于每一行都由一系列逗号分隔的字符串组成,而逗号是分隔符,因此变量会依次分配给这些字符串中的每一个,因此循环以分配给的最后一个变量结束。方便地删除任何封闭的引号。first
second
part*
for
part*
~
然后,由于我们现在将行的部分和原始文件名安全地保存在变量中,我们需要做的就是构建重命名指令,以及 -echo
它用于验证,或者echo
删除后,重命名文件。
推荐阅读
- javascript - 如何使用(“+ text here +”)将文本从一个javascript函数传递到另一个
- python - 如何将 OpenCV 图像与颜色进行比较
- atom-editor - Atom 中用于 lint 错误的 ESLint“修复”按钮停止工作
- linear-programming - PuLP MILP 约束:至少一个变量必须低于 0
- javascript - Javascript - 在数组中循环
- sql - BigQuery SQL 排除不在空结果中
- javascript - Javascript:为什么对象赋值中的“=”运算符会创建对现有对象的引用?
- ruby-on-rails - 单击链接以删除 Active Storage 和 Amazon S3 上的附件
- google-bigquery - bq 工具可以使用 GOOGLE_CLOUD_PROJECT 环境变量吗?
- typescript - 如何使用 Typescript 的引用和构建模式将 mono repo 编译为无服务器包?