簡體   English   中英

我有一個概率用字符串批量替換

[英]i have a prob with string replacing in batch

我正在嘗試對.dll文件進行自己的加密。 但是它不會像我想要的那樣可以工作,但annyone也可以提供幫助。


@echo off
set /p lol=(
echo %lol%>test.dll
for /f "tokens=*" %%j in (test.dll) do set f1=%%j
set f1=%f1:a=QUE%
set f1=%f1:b=GUI%
set f1=%f1:c=DOP%
set f1=%f1:d=EXO%
set f1=%f1:e=CUI%
set f1=%f1:f=RAY%
set f1=%f1:g=TAI%
set f1=%f1:h=YAM%
set f1=%f1:i=*+=%
set f1=%f1:j=UIT%
set f1=%f1:k=ITO%
set f1=%f1:l=ORC%
set f1=%f1:m=KIP%
set f1=%f1:n=JAA%
set f1=%f1:o=(.)%
set f1=%f1:p=)Y(%
set f1=%f1:q=!i!%
set f1=%f1:r=$S$%
set f1=%f1:s=WPL%
set f1=%f1:t=%*/%
set f1=%f1:u=FOL%
set f1=%f1:v=FUK%
set f1=%f1:w=@.@%
set f1=%f1:x=S$$%
set f1=%f1:y=^.^%
set f1=%f1:z=AAP%
set f1=%f1:A=qal%
set f1=%f1:B=gal%
set f1=%f1:C=dor%
set f1=%f1:D=ert%
set f1=%f1:E=332%
set f1=%f1:F=rat%
set f1=%f1:G=pok%
set f1=%f1:H=yap%
set f1=%f1:I=8-)%
set f1=%f1:J=uki%
set f1=%f1:K=ipa%
set f1=%f1:L=o:)%
set f1=%f1:M=kop%
set f1=%f1:N=jas%
set f1=%f1:O=911%
set f1=%f1:P=007%
set f1=%f1:Q=112%
set f1=%f1:R=4gh%
set f1=%f1:S=wrq%
set f1=%f1:T=5hi%
set f1=%f1:U=777%
set f1=%f1:V=gak%
set f1=%f1:W=2g2%
set f1=%f1:X=dom%
set f1=%f1:Y=666%
set f1=%f1:Z=aal%
set f1=%f1:0=ugb%
set f1=%f1:1=zup%
set f1=%f1:2=xfi%
set f1=%f1:3=cmv%
set f1=%f1:4=vui%
set f1=%f1:5=but%
set f1=%f1:6=nom%
set f1=%f1:7=mon%
set f1=%f1:8=hub%
set f1=%f1:9=whn%
set f1=%f1:!=ZIP%
set f1=%f1:@=XLO%
set f1=%f1:$=CVB%
set f1=%f1:%=VQE%
set f1=%f1:^=BUY%
set f1=%f1:&=NAM%
set f1=%f1:*=MAL%
set f1=%f1:(=LAL%
set f1=%f1:)=JN9%
set f1=%f1:#=255%
set f1=%f1:_=?19%
set f1=%f1:-={GT%
set f1=%f1:==SC}%
set f1=%f1:+=J~L%
set f1=%f1:\=;RT%
set f1=%f1:|=:OP%
set f1=%f1:{=KAA%
set f1=%f1:}=KAL%
set f1=%f1:[=PLO%
set f1=%f1:]=DQW%
set f1=%f1::=PIP%
set f1=%f1:;=AR9%
set f1=%f1:"=UNF%
set f1=%f1:'=CNP%
set f1=%f1:<=JMN%
set f1=%f1:>=HBH%
set f1=%f1:,=25J%
set f1=%f1:.=YF7%
set f1=%f1:/=UYG%
set f1=%f1:?=DFG%
set f1=%f1:`=PUY%
set f1=%f1:~=CV7%
echo %f1%>test.dll
pause
exit

老實說,我不確定代碼片段的目的是什么。 首先,重定向>將清除dll文件的所有內容。 接下來,我懷疑在第一個回顯之后您在set塊中的任何命令都將有機會執行。 當然,%lol%變量永遠不會在塊內獲取值,除非啟用了延遲擴展,否則將在執行設置塊內的任何內容之前先對其進行評估。 嘗試啟用延遲擴展。

放在上面:

setlocal enabledelayedexpansion

並將所有%var%的條件限定為!var!

希望這篇文章可以給您一些起點,幫助您實現自己的目標。

首先,完整的想法不錯,但一文不值,因為單靠批處理是無法做到的。
至少您不能批量讀取NUL(0x00)字符。

為什么您的代碼無法正常工作的原因很多,您在嘗試同時編寫時從test.dll中讀取,您如何期望它可以正常工作?

您的代碼不處理任何特殊字符,可以通過批處理來處理,但這很棘手。

set f1=%f1:*=MAL%無法工作,因為您無法以這種方式替換單個星。
同樣, set f1=%f1:==SC}% set f1=%f1:~=CV7%也會失敗。

set f1=%f1:%=VQE%始終將f1始終更改為=VQE ,而與f1的內容無關。

即使你刪除這些行,您的翻譯每個字符多次,輸入轉換a結果的輸出

ZIPhubKAAGTJN9ZIPvuighabuthiwhnzupzupwhnzupzupPIPJN9cmvcmvxfivuighbuthiwhnzupzupvuighvuighabuthiwhnzupzupwhnzupzupPIPJN9*J~L=*UYG

要發現此類問題,刪除exit並啟用echo on始終是一個好主意。

我不確定它是固定的還是損壞的,但是我得到了輸出:

CVBXLOYF7XLOugbugbmonwhnzupzupPIPJN9CVBvuighabuthiwhnzupzupwhnzupzupPIPJN9cmvcmvxfivuighbuthiwhnzupzupvuighvuighabuthiwhnzupzupwhnzupzupPIPJN9*J~L=cmvcmvxfivuighbuthiwhnzupzupvuighvuighabuthiwhnzupzupwhnzupzupPIPJN9*J~L=xfigxfirqCVBCVBLALYF7JN9vuighabuthiwhnzupzupwhnzupzupPIPJN9cmvcmvxfivuighbuthiwhnzupzupvuighvuighabuthiwhnzupzupwhnzupzupPIPJN9*J~L=*/

同樣,不確定它是否有效,但是我確實使用了:

setlocal enabledelayedexpansion

您有建立逆轉的方法嗎?

REM @echo off
setlocal enabledelayedexpansion
set /p lol=(
echo %lol%>test.txt
for /f "tokens=*" %%j in (test.txt) do set f1=%%j
set f1=%f1:a=QUE%
set f1=%f1:b=GUI%
set f1=%f1:c=DOP%
set f1=%f1:d=EXO%
set f1=%f1:e=CUI%
set f1=%f1:f=RAY%
set f1=%f1:g=TAI%
set f1=%f1:h=YAM%
set f1=%f1:i=*+=%
set f1=%f1:j=UIT%
set f1=%f1:k=ITO%
set f1=%f1:l=ORC%
set f1=%f1:m=KIP%
set f1=%f1:n=JAA%
set f1=%f1:o=(.)%
set f1=%f1:p=)Y(%
set f1=%f1:q=!i!%
set f1=%f1:r=$S$%
set f1=%f1:s=WPL%
set f1=%f1:t=%*/%
set f1=%f1:u=FOL%
set f1=%f1:v=FUK%
set f1=%f1:w=@.@%
set f1=%f1:x=S$$%
set f1=%f1:y=^.^%
set f1=%f1:z=AAP%
set f1=%f1:A=qal%
set f1=%f1:B=gal%
set f1=%f1:C=dor%
set f1=%f1:D=ert%
set f1=%f1:E=332%
set f1=%f1:F=rat%
set f1=%f1:G=pok%
set f1=%f1:H=yap%
set f1=%f1:I=8-)%
set f1=%f1:J=uki%
set f1=%f1:K=ipa%
set f1=%f1:L=o:)%
set f1=%f1:M=kop%
set f1=%f1:N=jas%
set f1=%f1:O=911%
set f1=%f1:P=007%
set f1=%f1:Q=112%
set f1=%f1:R=4gh%
set f1=%f1:S=wrq%
set f1=%f1:T=5hi%
set f1=%f1:U=777%
set f1=%f1:V=gak%
set f1=%f1:W=2g2%
set f1=%f1:X=dom%
set f1=%f1:Y=666%
set f1=%f1:Z=aal%
set f1=%f1:0=ugb%
set f1=%f1:1=zup%
set f1=%f1:2=xfi%
set f1=%f1:3=cmv%
set f1=%f1:4=vui%
set f1=%f1:5=but%
set f1=%f1:6=nom%
set f1=%f1:7=mon%
set f1=%f1:8=hub%
set f1=%f1:9=whn%
set f1=%f1:!=ZIP%
set f1=%f1:@=XLO%
set f1=%f1:$=CVB%
set f1=%f1:^%=VQE%
set f1=%f1:^=BUY%
set f1=%f1:&=NAM%
set f1=%f1:^*=MAL%
set f1=%f1:(=LAL%
set f1=%f1:)=JN9%
set f1=%f1:#=255%
set f1=%f1:_=?19%
set f1=%f1:-={GT%
set f1=%f1:^==SC}%
set f1=%f1:+=J~L%
set f1=%f1:\=;RT%
set f1=%f1:|=:OP%
set f1=%f1:{=KAA%
set f1=%f1:}=KAL%
set f1=%f1:[=PLO%
set f1=%f1:]=DQW%
set f1=%f1::=PIP%
set f1=%f1:;=AR9%
set f1=%f1:"=UNF%
set f1=%f1:'=CNP%
set f1=%f1:<=JMN%
set f1=%f1:>=HBH%
set f1=%f1:,=25J%
set f1=%f1:.=YF7%
set f1=%f1:^/=UYG%
set f1=%f1:?=DFG%
set f1=%f1:`=PUY%
set f1=%f1:^~=CV7%
echo %f1%>test.txt
pause

我必須使用(^)來轉義一些使輸出混亂的字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM