使用文件名的一部分作为变量

时间:2019-11-20 12:08:11

标签: batch-file

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

每个文件将具有以下结构:“ name_surname $ code”。

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

任何想法都会受到赞赏。

**编辑** 我到目前为止的代码

@ECHO OFF

setlocal EnableDelayedExpansion
md out
for /f %%G in ('dir /b "*.pdf"') do (
    call:_pwgen passwd
    pdftk %%G output out/%%G user_pw !passwd!
)

goto :EOF

:_pwgen passwd
setlocal ENABLEEXTENSIONS
set _RNDLength=8
set _Alphanumeric=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
set _Str=%_Alphanumeric%987654321
set passwd=%~1
set _tmp=%_Str:~9,1%
set /A _Len=_Len+_tmp
set _count=0
set _RndAlphaNum=
:_loop
set /a _count+=1
set _RND=%Random%
set /A _RND=_RND%%%_Len%
set _RndAlphaNum=!_RndAlphaNum!!_Alphanumeric:~%_RND%,1!
if !_count! lss %_RNDLength% goto _loop
set passwd=!_RndAlphaNum!
endlocal&set %~1=%passwd%
GOTO:EOF

1 个答案:

答案 0 :(得分:1)

可能违反最佳做法建议:

@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
    pdftk %%G output out/%%G user_pw !passwd!
)

goto :EOF

:_pwgen passwd
setlocal ENABLEEXTENSIONS
echo You can use %partial_filename% here as you see fit.
...