【问题标题】:Windows Batch How to delete specific words from txt fileWindows Batch 如何从 txt 文件中删除特定单词
【发布时间】:2019-02-18 12:38:04
【问题描述】:

我不知道如何删除一行中的一段文字。

我有一个批处理文件,可以在所选文件夹中创建我感兴趣的文件列表。

dir D:\pool\template_test>U:\Desktop\list.txt
findstr "Work_T" U:\Desktop\list.txt > U:\Desktop\tamplates.txt

输出:

2013-03-13  17:24               622 Work_T_tamplate1.fdf

在最终文件中,如您所见,显示日期、时间、大小,但我只需要名称。我该怎么做?

我尝试使用其他帖子中的示例,但它不起作用:

for /f "tokens=3" %%A in (U:\Desktop\tamplates.txt) do findstr /C".dot" /C".pdf" /C".fdf" %%A

final file after using proposed code

【问题讨论】:

  • “它不起作用”不是一个非常精确的故障描述!反正你错过了/C后面的:,所以肯定是/C:".dot"...
  • cd /d "D:\pool\template_test"dir /b *.dot *.pdf *.fdf
  • 我建议dir /b "D:\pool\template_test" *.dot *.pdf *.fdf 解决您的问题。
  • 那么替换部分到底是从哪里来的呢?
  • @Stephan,谢谢,是的,我想出了那部分,但标题有点混乱:)

标签: batch-file for-loop findstr


【解决方案1】:

所以你已经在StephanStephan得到了答案

这些会包括你的搜索,下面只返回文件名:

cd /d "D:\pool\template"    
(@for /f %%i in ('dir /b "Work_T*.dot" "Work_T*.pdf" "Work_T*.fdf" ') do (
    @echo "%%i"
  )
)>"U:\Desktop\tamplates.txt"

但您也可能需要完整路径,因此这将包括文件的完整路径:

cd /d "D:\pool\template"    
(@for /f %%i in ('dir /b "Work_T*.dot" "Work_T*.pdf" "Work_T*.fdf" ') do (
    @echo "%%~fi"
  )
)>"U:\Desktop\tamplates.txt"

如果需要,添加 /s 以递归遍历子文件夹。

编辑

对于 UNC 路径:

(@for /f %i in ('dir /b /a-d "\\tuesrna02\pool\template" ^| findstr /i "Work_T"') do (
    @echo %%i
  )
)>"U:\Desktop\tamplates.txt"

【讨论】:

  • 哇,非常感谢。以及如何在网络驱动器的情况下: \\tuesrna02\pool\template ?在这种情况下,如果不映射磁盘,cd /d 将不起作用...
  • @Poligraf:不,cd /d 不适用于网络路径,但 pushd 可以。
  • 再想一想——使用你的代码之后templates.txt包含C:\Windows>() Work_T_HUB_confirm_PBSC_EN.dot C:\Windows>() Work_T_TC_DFC_PBSC_EN.dot 为什么会出现C:\Windows>()这里 ??以及如何删除它?
  • 不确定我是否理解,您能否在原始问题中发布截图?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-08
  • 2017-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多