试图找到可以做到这一点但没有运气的蝙蝠。由于我对批处理代码的了解非常有限,所以我不知道从哪里开始编辑类似的现有代码。
我在一个文件夹中有文件,如下所示:
\\NAS\ART\1234.pdf
\\NAS\ART\1235.ai
\\NAS\ART\1236.eps
我想将这些文件移动到服务器上文件夹结构如下的另一个文件夹中:
\\NAS\Art\1234\Original\1234.pdf
\\NAS\Art\1235\Original\1235.ai
\\NAS\Art\1236\Original\1236.eps
它将把文件放到filenames文件夹的原始文件夹中。抱歉,这令人困惑。
我发现这很接近我想要的,但是减去了删除字符的作用。
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
FOR /f "delims=" %%a IN (
'dir /b /a-d "%sourcedir%\*.xml" '
) DO (
FOR /f "tokens=1delims=_-" %%b IN ("%%a") DO (
FOR /f "delims=" %%d IN (
'dir /b /ad "%destdir%\*%%b*" '
) DO (
ECHO(MOVE "%%a" "%destdir%\%%d\"
)
)
)
GOTO :EOF
答案 0 :(得分:0)
您可以使用此批处理文件将\\NAS\ART\
中的所有非隐藏文件移动到之前创建的合适子目录(如果该子目录尚不存在),并覆盖目标目录中的同名文件。
@echo off
for %%I in ("\\NAS\ART\*") do (
if not "%%I" == "%~f0" (
md "%%~dpnI\Original" 2>nul
move /Y "%%I" "%%~dpnI\Original\"
)
)
IF 条件可以避免将批处理文件也存储在目录\\NAS\ART\
中,并且在绝对不可能的情况下可以将其删除。
要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读每个命令显示的所有帮助页面。
echo /?
for /?
if /?
md /?
move /?
也请阅读有关Using Command Redirection Operators的Microsoft文章,以获取对2>nul
的解释,该{{1}}用于禁止命令 MD 输出以处理 STDERR 的错误消息将该错误消息重定向到设备 NUL 上,以创建目录中已存在的文件。