Batch file 批处理脚本变量访问

Batch file 批处理脚本变量访问,batch-file,cmd,scripting,pdftk,Batch File,Cmd,Scripting,Pdftk,我正在编写一个小批量脚本,用于删除目录和子目录中每个pdf文件的第一页。问题是,我不知道如何使用filename变量 setlocal enabledelayedexpansion pause FOR /R %%i IN (*.pdf) DO ( set fileName=%%~nxi echo %fileName% cd /d %%i ren %%i test.pdf pdftk test.pd

我正在编写一个小批量脚本,用于删除目录和子目录中每个pdf文件的第一页。问题是,我不知道如何使用filename变量

setlocal enabledelayedexpansion

    pause

    FOR /R %%i IN (*.pdf) DO (
        set fileName=%%~nxi
        echo %fileName%
        cd /d %%i
        ren %%i test.pdf
        pdftk test.pdf cat 2-end output %fileName%
        rm test
        cd D:\Daten

    )

    pause
此脚本的输出如下所示

set fileName=test.pdf
echo
cd \d D:\Daten\Scanned_but_not_ready\Bewerbung_CV\test.pdf
ren D:\Daten\Scanned_but_not_ready\Bewerbung_CV\test.pdf test.pdf
pdftk test.pdf cat 2-end output
rm test
cd D:\Daten

我已经用%%和single%尝试了我所知道的一切。

现在我自己找到了一个解决方案。。。对于每个需要它的人

setlocal enabledelayedexpansion

pause

FOR /R %%i IN (*.pdf) DO (
    echo %%~nxi
    ren %%i test.pdf
    pdftk %%~dpitest.pdf cat 2-end output %%~dpi%%~nxi
    del %%~dpitest.pdf
    cd D:\Daten
)

pause

您应该始终在可能包含空格的路径上使用双引号
%%~dpi%%~nxi
%%~fi
相同,但是默认的
%%i
应该已经包含
for/r
的完整路径,但是对于批处理新手来说做得不错+1您最初的代码问题是延迟扩展问题。但是您很快意识到,您不需要将
FOR
变量指定给环境变量。