Board logo

标题: [文件操作] [已解决]批处理如何将一个文件夹中的多个文件名输出到TXT文本中 [打印本页]

作者: qinyoyo    时间: 2018-4-25 09:55     标题: [已解决]批处理如何将一个文件夹中的多个文件名输出到TXT文本中

各位大神,新人求指教,现在需要将D:\testpdf中的PDF文件名提取到D:\testpdf\1.txt 中。
     但是由于PDF文件同个文件名有不同版本号,我只需要提取一个,判别条件是取前11位,相同文件只需在1.txt中出现一次,该如何实现?
     例如下面这个图面,最终我要在1.txt中得到下面的输出:
      1070924392_
      1070928211_
      1070928396_
      Z10M1005493 javascript:;

      求高手指点,非常感谢!!!
作者: qinyoyo    时间: 2018-4-25 10:51

我只会输出所有,不会提取,有没有大神指点一下,这是我弄的
@echo off

set listfile=D:\testpdf\1.txt

if exist %tmp%\tmp.txt del %tmp%\tmp.txt
if exist "%listfile%" del "%listfile%"

echo 正在查找PDF文件...
dir /s /b "D:\testpdf"|find /i ".pdf">>%tmp%\tmp.txt


echo.
echo 正在输出结果...

for /f "delims=" %%i in (%tmp%\tmp.txt) do (
echo %%~ni>>"%listfile%"
title=%%~fi
)
del %tmp%\tmp.txt
copy /y "%listfile%" "D:\testpdf"

exit /b
作者: qinyoyo    时间: 2018-4-25 10:57

最后输出是这样的
1070924392_A
1070924392__
1070928211_A
1070928211__
1070928396_B
1070928396_C
1070928396_D
Z10M1005493_A
Z10M1005493_B
Z10M1005493_C
Z10M1005493__
作者: cfwyy77_bat    时间: 2018-4-25 13:28

来个python的,
  1. import os
  2. import sys
  3. f11name = set(i[0:11] for i in os.listdir(os.path.dirname(sys.argv[0])) if i[-3:]=="pdf")
  4. with open("1.txt","w") as f:
  5.     for i in f11name:
  6.         f.write(i)
  7.         f.write("\n")
复制代码

作者: Batcher    时间: 2018-4-25 13:59

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "delims=" %%i in ('dir /b "D:\testpdf\*.pdf"') do (
  4.     set "FileName=%%~ni"
  5.     set "FilePrefix=!FileName:~0,11!"
  6.     if not defined v!FilePrefix! (
  7.         echo,!FilePrefix!
  8.         set v!FilePrefix!=1
  9.     )   
  10. ))>"D:\testpdf\1.txt"
复制代码

作者: qinyoyo    时间: 2018-4-25 14:07

回复 5# Batcher
非常感谢!!!!
试了一下,很好用。




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