Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file PDFTK右键单击以加密_Batch File_Pdftk - Fatal编程技术网

Batch file PDFTK右键单击以加密

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

我需要获取文件名的某个部分,并将其用作批处理文件中的变量

每个文件将具有以下结构:“name\u姓氏$code”

我的目标是获得$sign后面的所有文本

虽然我有充分的理由对忽视“最佳做法”表示不满,但不幸的是,我不知道如何解决这个问题

avery_larry帮助我在批处理文件中获得正确的代码(请参见下面的代码),但现在我想通过将其添加到右键单击/发送到命令中来进一步改进

这是我的批处理文件代码(尽管这不适用于右键单击选项)

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

@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
看见