【问题标题】:How to name a folder like the files that are copied into it?如何命名一个文件夹,就像复制到其中的文件一样?
【发布时间】:2016-03-19 21:33:26
【问题描述】:

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

例如,如果我要复制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创建文件夹名称,我只是希望文件名用作文件夹名称...

【问题讨论】:

    标签: batch-file directory filenames


    【解决方案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"
    )
    

    【讨论】:

    • 如果您觉得我的回答解决了您的问题,您应该点击左侧的对勾将其标记为正确
    猜你喜欢
    • 2013-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多