如何像复制到其中的文件一样命名文件夹?

How to name a folder like the files that are copied into it?

我有一个批处理脚本,可以将 .eps.pdf 文件移动到单独的文件夹中,.epsHighres 中,.pdf 在 [=16] 中=].但是我想将主文件夹命名为文件名。

例如,如果我正在复制 Man.epsMan.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"
)