PDFTK右键加密

PDFTK right click to encrypt

我需要获取文件名的特定部分并将其用作批处理文件中的变量。

每个文件将具有以下结构:"name_surname$code".

我的目标是获取 $ 符号后的所有文本。

虽然因疏忽 'best practice' 而被指指点点,但遗憾的是我不知道解决此问题的其他方法。

avery_larry 帮助我在我的批处理文件中获得正确的代码(见下面的代码),但现在我想通过将它添加到右侧 click/send 来进一步处理命令。

这是我的批处理文件代码(尽管这对右键单击选项不起作用)。

下面的示例遍历所有文件,而我现在需要的代码应该只应用于选定的文件。

@ECHO OFF

setlocal EnableDelayedExpansion
md out
for /f %%G in ('dir /b "*.pdf"') do (
    for /f "delims=$ tokens=1*" %%H in ("%%~nG") do set "partial_filename=%%~I"
    call:_pwgen passwd
    set FULLNAME=%%G
    set ENDTEXT=!FULLNAME:*$=!
    call set TRIMMEDNAME=%%FULLNAME:!ENDTEXT!=%%
    pdftk %%G output out/!TRIMMEDNAME:~0,-1!.pdf user_pw !passwd!
)

goto :EOF

:_pwgen passwd
setlocal ENABLEEXTENSIONS
set passwd=%~1
set _count=0:_loop
set /a _count+=1
set passwd=%partial_filename%
endlocal&set %~1=%passwd%
GOTO:EOF

这不完全是我需要的。

通过大量阅读和多次破坏我的批处理文件,我找到了我正在寻找的答案。

SETLOCAL ENABLEDELAYEDEXPANSION
@echo off
if [%1]==[] goto :eof
:loop

set var=%~n1

for /f "tokens=1 delims=*$" %%a in ("%var%") do set "partial_filename=%%~I (
    set _string=!var%:*$=!
)
for /f "tokens=1 delims=$*" %%a in ("%var%") do  set "partial_filename=%%~I (
    set _fname=!var%:$*=!
)
call set _newfname=%%_fname:!_string!=%%

pdftk %1 output "%~dp1!_newfname:~0,-1!%~x1" user_pw !_string! allow printing
shift
if not [%1]==[] goto loop