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"
)

如果你觉得我的答案解决了你的问题,你应该点击左边的复选框,将其标记为正确