【问题标题】:Batch script to find the names of modified files查找修改文件名称的批处理脚本
【发布时间】:2015-12-14 05:48:05
【问题描述】:

我在一个文件夹中有大约 500 个 .txt 文件。其中,大约 100 个文件包含我希望更改的文本。我已经使用下面的代码来做到这一点。

used Repl.bat and the below code:
for %%F in (*.txt) do (
type "%%F"|repl Apples Mangoes >"%%F.new"
move /y "%%F.new" "%%F"
)

由于这会搜索所有文件,因此文件正在被修改。我不知道在哪些文件中,文本已被替换。

我的实际任务是更改字符串并将修改后的文件放入另一个文件夹。 我尝试使用下面的代码来移动修改后的文件。但是由于所有文件都被修改了,我不知道该怎么做。

ECHO OFF
set source=C:\abc\
set destination=C:xyz\

for /F "tokens=2-4 delims=/ " %%i in ('date /t') do set yyyymmdd1=%%j"."%%i"."%%k

if exist %destination% goto GO
:GO
mkdir %destination%%yyyymmdd1%
xcopy %source%* %destination% /m/s/d/y/c/v/r
echo. 
echo Finished copying %source% to %destination%
echo.
echo Created %destination%%yyyymmdd1%
pause

提前致谢

【问题讨论】:

  • 我看到了两种方法:1)首先检查文件是否包含要用 find 命令替换的单词。然后要么原封不动地移动文件,要么通过 repl 运行它。 2)对所有文件调用repl,然后使用fc命令比较原始和副本
  • 感谢您的快速回复。我是批处理脚本的新手,上面的代码不是我自己的。我只从这个网站上拿了它。请详细说明
  • SO 不是“写我的代码”网站。这个想法是为您提供建议。您需要能够遵循给出的建议
  • 您好,我尝试使用 fc 命令,发现文件已修改。但无论如何我可以得到那些修改文件的列表
  • 下次在文件中替换之前使用attrib.exe -a *.txt,它会从所有TXT文件中删除存档属性。文件的修改导致仅在修改后的文件上再次设置存档属性。然后,您可以使用带有/A/M 的命令xcopy 轻松复制具有归档属性集的文件。存档属性是为这样的任务设计的。或者修改repl.bat甚至不包含搜索字符串的文件?

标签: batch-file batch-processing


【解决方案1】:

要简单的找出哪些文件实际上被修改了,只针对它们的内容,你可以使用下面的代码sn-p,它将所有被修改的文件收集到日志文件@987654321中@:

@echo off
> "change.log" (
    for %%F in ("*.txt") do (
        type "%%~F" | > "%%F.new" repl Apples Mangoes
        > nul fc /L "%%~F" "%%~F.new" || echo "%%~F"
        > nul move /Y "%%~F.new" "%%~F"
    )
)

这使用了fc 命令,并且它将ErrorLevel 设置为0 以匹配文件,否则设置为1|| 构成条件命令分隔符,仅在非零ErrorLevel(也称为退出代码或返回代码)的情况下执行下一条命令。

比较是在文本模式下完成的。要将其更改为二进制模式,请将fc /L 替换为fc /B

重定向> nul 避免了fc(如Comparing files [...]FC: no differences encountered)或move(如1 file(s) moved.)的任何消息。如果您想在屏幕上看到 sch 消息,请将 > nul 替换为 > con

之后要移动收集的修改文件,请在批处理脚本中使用以下命令行:

for /F "delims=" %%I in ("change.log") do (move "%%~I" "\path\to\destination\")

【讨论】:

    猜你喜欢
    • 2023-02-23
    • 2019-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多