[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理获取文件名并追加到list.txt列表的第二列,请高手们修改一下,谢谢!

运行下面代码的效果只有第三行正确:
A1.pdf
F3.pdf
G1.pdf=图.pdf
=屋.pdf
=面.pdf
我要实现的目标效果是:
A1.pdf=屋.pdf
F3.pdf=面.pdf
G1.pdf=图.pdf
A1.pdf、F3.pdf、G1.pdf文件名已经在list.log列表中作为第一列;提取屋.pdf、面.pdf、图.pdf是新

文件名作为第二列。list.log和新文件及bat都在当前目录下。修改下列代码以实现“旧文件名=新

文件名”追加写入到list.log列表中。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. :: 第二次提取文件名并追加到list.log,与第一次提取的文件名对应成列格式
  4. set count=1
  5. for %%f in (*.pdf) do (
  6.     if !count! equ 1 (
  7.         set "secondFile=%%~nxf"
  8.         echo, "%%f"
  9.         echo !firstFile!=!secondFile!>>list.log
  10.     )
  11.         set /a !count!+=1
  12. )
  13. echo 文件名已追加到list.log
  14. endlocal
  15. pause
复制代码

回复 1# WBATW
  1. @echo off
  2. cd /d "%~dp0"
  3. set "InFile=list.log"
  4. set "OutFile=list.log.new"
  5. setlocal enabledelayedexpansion
  6. (for /f "delims=" %%i in ('dir /b /a-d "*.pdf"') do (
  7.     set /p str=
  8.     echo !str!=%%i
  9. ))<"%InFile%" >"%OutFile%"
  10. move /y "%OutFile%" "%InFile%"
  11. pause
复制代码
测试代码之前请做好备份

TOP

回复 2# ShowCode
批处理我不会多嘛!

TOP

[i=s] 本帖最后由 WBATW 于 2024-4-4 19:52 编辑 [/i]

[b]回复 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=279708&ptid=68774]3#[/url] [i]WBATW[/i] [/b]
批处理我不会多嘛!

TOP

回复 3# WBATW
批处理我不会多嘛!

TOP

回复 3# WBATW
批处理我不会多嘛!

TOP

回复 3# WBATW
批处理我不会多嘛!

TOP

回复 3# WBATW
批处理我不会多嘛!

TOP

回复 3# WBATW
批处理我不会多嘛!

TOP

回复 3# WBATW
批处理我不会多嘛!

TOP

回复 3# WBATW
批处理我不会多嘛!

TOP

回复 3# WBATW
批处理我不会多嘛!

TOP

回复 3# WBATW

谢谢你的回复,代码实现了如题效果。
我在问题中示例的是pdf一个类型的文件,但是,实际上可能有多个类型如*.doc、*.jpg、*.exls等等,这种情况下需要排除掉list.log文件列表和bat脚本本身。
批处理我不会多嘛!

TOP

回复 13# WBATW
  1. @echo off
  2. cd /d "%~dp0"
  3. set "InFile=list.log"
  4. set "OutFile=%temp%\list.log.new"
  5. setlocal enabledelayedexpansion
  6. (for /f "delims=" %%i in ('dir /b /a-d ^| findstr /v /c:"%InFile%" /c:"%0"') do (
  7.     set /p str=
  8.     echo !str!=%%i
  9. ))<"%InFile%" >"%OutFile%"
  10. move /y "%OutFile%" "%InFile%" >nul
  11. pause
复制代码
测试代码之前请做好备份

TOP

本帖最后由 WBATW 于 2024-4-5 15:08 编辑

回复 14# ShowCode
到第六行后添加pause暂停,停不了,闪退。将变量引用的%改为(应该改为)“!”,同样也是闪退。请大师检查一下看看问题出哪里了,谢目录下谢!(我将list.log文件也放进了%temp%目录下)。
批处理我不会多嘛!

TOP

返回列表