如何命名文件夹,如复制到其中的文件?

时间:2015-12-14 11:55:27

标签: batch-file directory filenames

我有一个批处理脚本,可以将.eps.pdf个文件移到.eps Highres.pdf Lowres的单独文件夹中。但我想将主文件夹命名为文件名。

例如,如果我正在复制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创建文件夹名称,我只想将文件名用作文件夹名称...

1 个答案:

答案 0 :(得分:1)

您的代码存在一些问题。当使用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"
)