2012-09-26 110 views
1

我想從正在運行的批處理文件創建另一個文件輸出,這意味着原始內容在其中。在這個批處理文件中,它會執行一段時間或for循環,直到它找到「end」或任何在內容末尾添加的獨特單詞。創建內容處於批處理代碼的文件

我不想簡單地複製文件(它有重要的內容),因爲這會暴露信息。然後通過批量調用文件來運行它。

code: 
-start of batch 
-check if the file a.txt exist del a.txt 
-starts to create the a.txt file 

>start of content: 
>"the quick brown fox jump over the lazy dog" 
>lynx: unique word 
>end of content 

-writes the content to a.txt using for loop or while until it finds the unique word 
-runs the a.txt file 
-deletes the a.txt file 
-exit 

希望有人可以幫忙。謝謝! 或者如果有人可以建議一個更好的方式來做到這一點。我將不勝感激

+0

爲什麼你需要創建新的批處理文件?爲什麼不簡單地將代碼作爲現有批處理文件中的函數調用? – dbenham

回答

0

帶for命令的行本身需要引號。

For循環做工精細,直到他們打包含引號,然後一切都變成奶油凍行...

你不能有這裏形成。

也許試試vbscript呢?

+0

如果我刪除引號,該怎麼辦?它會起作用嗎? – user1701414

+0

@ user1701414 - 實際上,報價並不是什麼大問題,特別是如果它們一致的話。什麼會橫向轉向一切,就是重定向和管道符號,如<> | <<。即使你知道他們在那裏,他們可能會非常困難。 –

0
@echo off 
setlocal enabledelayedexpansion 
if exist a.txt del a.txt 

copy nul a.txt > nul      & :: Not needed, but in your specs 

set line[1]=This is what you asked for. 
set line[2]=Not really the best method. 
set line[3]=But it will work. 
set line[4]= 
set line[5]=linux 
set line[6]=[end] 

for /l %%i in (1,1,1000) do (
    if  "!line[%%i]!"=="linux" goto :end 
    if  "!line[%%i]!"=="[end]" goto :end 
    if  "!line[%%i]!"=="" echo.>>a.txt 
    if NOT "!line[%%i]!"=="" echo !line[%%i]!>>a.txt 
) 

:end 
:: Broken Out Of Loop 

ren a.txt a.bat 
call a.bat 
del a.bat 

使用line[n]方法是相當浪費的存儲器,I會建議從一個文件移動數據到另一個。