Batch file PDFTK右键单击以加密
我需要获取文件名的某个部分,并将其用作批处理文件中的变量 每个文件将具有以下结构:“name\u姓氏$code” 我的目标是获得$sign后面的所有文本 虽然我有充分的理由对忽视“最佳做法”表示不满,但不幸的是,我不知道如何解决这个问题 avery_larry帮助我在批处理文件中获得正确的代码(请参见下面的代码),但现在我想通过将其添加到右键单击/发送到命令中来进一步改进 这是我的批处理文件代码(尽管这不适用于右键单击选项) 下面的示例遍历所有文件,而我现在需要的代码应该只应用于选定的文件Batch file PDFTK右键单击以加密,batch-file,pdftk,Batch File,Pdftk,我需要获取文件名的某个部分,并将其用作批处理文件中的变量 每个文件将具有以下结构:“name\u姓氏$code” 我的目标是获得$sign后面的所有文本 虽然我有充分的理由对忽视“最佳做法”表示不满,但不幸的是,我不知道如何解决这个问题 avery_larry帮助我在批处理文件中获得正确的代码(请参见下面的代码),但现在我想通过将其添加到右键单击/发送到命令中来进一步改进 这是我的批处理文件代码(尽管这不适用于右键单击选项) 下面的示例遍历所有文件,而我现在需要的代码应该只应用于选定的文件 @E
@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
看见