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
我需要获取文件名的特定部分并将其用作批处理文件中的变量。
每个文件将具有以下结构:"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