Board logo

标题: [文本处理] BAT或JS如何根据文本中的内容,核对文件名? [打印本页]

作者: 灯塔彭于晏    时间: 2021-6-18 00:07     标题: BAT或JS如何根据文本中的内容,核对文件名?

先谢谢您啦。

现有文本1.TXT,内容如下:
  1. https://www.***.com/75013950
  2. https://www.***.com/55325876
  3. https://www.***.com/61879076
  4. https://www.***.com/50140585
  5. https://www.***.com/12904418
  6. https://www.***.com/36633503
复制代码
每一行最后的数字,应该在桌面yuantu文件夹中,对应有图片文件才对。比如第一行末尾的数字是75013950,应该在yuantu文件夹中存在一个 75013950.jpg 的图片文件。

请问,如何用BAT 或者 JS 的方式,根据1.txt里的数字,检查yuantu文件夹中,缺少哪个数字的图片文件,并输出结果到2.txt
谢谢您啦
作者: qixiaobin0715    时间: 2021-6-18 06:38

本帖最后由 qixiaobin0715 于 2021-6-18 10:50 编辑

把test.bat和1.txt放在桌面或与文件夹yuantu平行的目录中运行,未经测试:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%a in ("yuantu\*.jpg") do set -%%~na=ture
  4. (for /f "delims=" %%i in (1.txt) do if not defined -%%~ni echo,不存在文件:%%~ni.jpg)>2.txt
  5. pause
复制代码

作者: qixiaobin0715    时间: 2021-6-18 13:40

这样应当也行。test.bat和1.txt文件放在图片目录下:
  1. @echo off
  2. (for /f "delims=" %%a in (1.txt) do if not exist %%~na.jpg echo,不存在文件:%%~na.jpg)>2.txt
  3. pause
复制代码

作者: newswan    时间: 2021-6-18 13:42

powershell
  1. $file = "a.txt"
  2. $path = "yuantu"
  3. get-content $file | foreach {
  4.     if ($_ -match "\d+$")
  5.     {
  6.         if (-not(test-path $path\$matches[0]))
  7.             {
  8.                 $str = $str + $matches[0] + "`n"
  9.             }
  10.     }
  11. }
  12. $str
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2