2011-06-27 137 views
0

我创建了一个批处理脚本来破解一个TC卷,给出一个由换行符分隔的已知密码的文本列表。不幸的是它不能正常工作。当它每行下行时,它不会读取空格。如果我有一个条目“HelloWorld”,它会读取“Helloworld”,但是如果条目是“Hello World”,那么它只会读取“Hello”。代码:批处理脚本无法正常工作

@echo off 
echo "--- Starting ---" 

set drive=V 
set tcexe="C:\Program Files\TrueCrypt\TrueCrypt.exe" 
set tcvol="C:\Users\Ryan\Desktop\rawr.tar.gz" 

:Start 
for /f %%i in (passlist.txt) do call :Crack %%i 

:Crack 
set pass=%1 
echo Trying %pass%... 
%tcexe% /q /l %drive% /v %tcvol% /p %pass% /s /e /b 
if exist %drive%: goto :End 
goto :eof 

:End 
echo "TC volume cracked!" 
echo The password is %pass% 
pause 

有人可以解决这个问题给我吗?谢谢。

回答

1

使用

for /f "delims=" %%i in (passlist.txt) do call :Crack "%%i" 

:Crack 
set pass=%1 

for /f不令牌化输入和默认使用空格分隔令牌。如果你将这些传递给子程序,你需要引用这个参数。

另一种选择是不在for行中引用,而是在set pass="%*"中引用。无论哪种方式,你需要报价。