我在创建特定过滤器以在Windows中移动文件时遇到问题。问题是,我有一个名为 ADB.inp 的文件,基于他,系统将创建名为 ADB001.inp , ADB002的其他文件。 inp , ADB976.inp 等,我需要将这些文件移动到另一个文件夹,但保留文件夹中的原始 ADB.inp 。
另一个观察结果是 ADB.inp 需要与创建文件的文件夹相同。这样我就无法制作像
这样的过滤器*。inp
或
ADB *
或
ADB0 *
任何人都知道可以过滤这些文件的方式吗?
答案 0 :(得分:0)
Windows批处理文件名屏蔽功能限制为*
(任何0个或更多字符)或?
(0或1个字符,.
除外)。因此,使用单个MOVE命令无法完成。
最简单的解决方案是使用两个MOVE命令 - 一个用于移动所有内容,另一个用于将模板移回原始位置。
假设您当前的目录是所有文件的起始位置:
move adb*.inp newLocation
move newLocation\adb.inp .
另一种选择是暂时隐藏模板,但这需要三个步骤:
attrib +h adb.inp
move adb*.inp newLocation
attrib -h adb.inp
如果模板必须始终保留(取消隐藏)在正确的文件夹中,那么您将不得不迭代文件并逐个移动它们:
for %%F in (adb*.inp) do if /i "%%F" neq adb.inp move "%%F" newLocation
或
for /f "delims=" %%F in ('dir /a-d /b adb*.inp^|findstr /lix adb.inp') do move "%%F" newLocation