我正在尝试编写一个脚本来获取没有扩展名的文件夹中的所有文件名。然后从那个带有所有名称的txt文件,我想在任何地方的文件夹中复制具有该名称的每个文件。因此,文件夹B将包含我需要的所有文件.pdf并且我想从文件夹A获取相应名称为B的.doc文件
实施例 文件夹B = 123.doc.pdf,234.doc.pdf,345.doc.pdf
文件夹A = 123.doc,234.doc,345.doc,1324.doc,54353.doc,1231.doc
我想从B中获取没有.pdf的名称,然后使用该txt文件将文件夹A中的doc文件复制到新文件夹C中。
我创建了一个脚本来获取所有文件名,但不知道如何删除扩展名并将其保存到文件中。
dir /a /b /-p /o:gen >FileNames.txt
任何人都可以提供帮助吗?
答案 0 :(得分:0)
以下是此任务的简单批处理文件:
@echo off
md "C:\Temp\Folder C" 2>nul
for %%I in ("C:\Temp\Folder B\*.doc.pdf") do if exist "C:\Temp\Folder A\%%~nI" copy /Y "C:\Temp\Folder A\%%~nI" "C:\Temp\Folder C\" >nul
rd "C:\Temp\Folder C" 2>nul
第二个命令行创建Folder C
,禁止显示任何错误消息,例如此文件夹上的一个输出已经写入,以通过将其重定向到设备 NUL来处理 STDERR 强>
第三个命令行使用命令 FOR 在Folder B
中搜索文件名与通配符模式*.doc.pdf
匹配的任何非隐藏文件。
对于Folder B
中的每个找到的文件,执行 IF 条件以检查.pdf
中是否存在具有相同名称且文件扩展名为Folder A
的文件。如果该条件为真,则将文件复制到Folder C
并覆盖Folder C
中具有相同名称的现有文件,除了设置了只读属性,并禁止写入成功消息以处理 STDOUT ,将其重定向到设备 NUL 。
最后删除Folder C
,但仅限为空。处理包含文件的Folder C
上的 STDERR 的错误消息通过将其重定向到设备 NUL 来抑制。
要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。
copy /?
echo /?
for /?
if /?
md /?
rd /?