Batch file 如何命名文件夹,如复制到其中的文件?
我有一个批处理脚本,可以将Batch file 如何命名文件夹,如复制到其中的文件?,batch-file,directory,filenames,Batch File,Directory,Filenames,我有一个批处理脚本,可以将.eps和.pdf文件移动到单独的文件夹中,其中高分辨率中的.eps和低分辨率中的.pdf。但是我想把主文件夹命名为文件名 例如,如果我正在复制Man.eps和Man.pdf,则相应的主文件夹名称应为Man,其中,Man.eps应位于Highres子文件夹中,Man.pdf应位于Lowres子文件夹中 以下是我迄今为止所取得的成果: @echo off & setlocal > nul mkdir "%%~pA" for %%F in (*.eps) d
.eps
和.pdf
文件移动到单独的文件夹中,其中高分辨率中的.eps
和低分辨率中的.pdf
。但是我想把主文件夹命名为文件名
例如,如果我正在复制Man.eps
和Man.pdf
,则相应的主文件夹名称应为Man
,其中,Man.eps
应位于Highres
子文件夹中,Man.pdf
应位于Lowres
子文件夹中
以下是我迄今为止所取得的成果:
@echo off & setlocal
> nul mkdir "%%~pA"
for %%F in (*.eps) do (
> nul mkdir "%%~pA/HIGHRES"
> nul move "%%F" "%%~pA/HIGHRES"
for %%F in (*.pdf) do (
> nul mkdir "%%~pA/LOWRES"
> nul move "%%F" "%%~pA/LOWRES"
)
)
它使用%%~pA
创建文件夹名,我只想将文件名用作文件夹名…您的代码有几处错误。使用for循环文件集时,应使用for/R
。此外,%%~pA
尝试获取名为%%a
的变量的一部分,而您没有该部分。此外,您不应该忘记关闭第一个for循环。最后,您应该使用~n
和~nx
分别获取文件名或文件名+扩展名
试试这个:
@echo off
for /R %%F in (*.eps) do (
mkdir "%%~nF/HIGHRES"
move "%%F" "%%~nF/HIGHRES/%%~nxF"
)
for /R %%F in (*.pdf) do (
mkdir "%%~nF/LOWRES"
move "%%F" "%%~nF/LOWRES/%%~nxF"
)
如果你觉得我的答案解决了你的问题,你应该点击左边的复选框,将其标记为正确