我有一個轉換請求,需要轉換一個txt文件才能顯示BATCH中的特定文件夾。批處理文件txt轉換
所以這裏有一個例子文件:
zpaq v7.15 journaling archiver, compiled Aug 17 2016
zpaq_m1.zpaq: 1 versions, 14 files, 125 fragments, 4.521800 MB
- 2017-03-31 21:22:24 9025719 D c:/2/testdata/
- 2016-09-26 13:26:07 9149 A c:/2/testdata/test.txt
- 2017-03-31 21:22:48 9014621 D c:/2/testdata/Subfolder/
- 2017-03-31 21:22:59 11856 D c:/2/testdata/Subfolder/History/
- 2017-03-31 21:22:24 11856 D c:/2/testdata/Subfolder/History/2016-03-12/
- 2016-03-11 23:31:49 1976 A c:/2/testdata/Subfolder/History/2016-03-12/00h31m49s v1.9.m3p
- 2016-03-11 23:36:47 1976 A c:/2/testdata/Subfolder/History/2016-03-12/00h36m47s v1.9.m3p
- 2016-03-11 23:37:09 1976 A c:/2/testdata/Subfolder/History/2016-03-12/00h37m09s v1.9.m3p
- 2016-03-11 23:38:34 1976 A c:/2/testdata/Subfolder/History/2016-03-12/00h38m34s v1.9.m3p
- 2016-03-11 23:40:00 1976 A c:/2/testdata/Subfolder/History/2016-03-12/00h40m00s v1.9.m3p
- 2016-03-11 23:40:25 1976 A c:/2/testdata/Subfolder/History/2016-03-12/00h40m25s v1.9.m3p
- 2016-03-11 23:39:43 9001472 A c:/2/testdata/Subfolder/test.exe
- 2017-03-28 10:45:03 1293 A c:/2/testdata/Subfolder/test.ini
- 2016-09-26 14:04:43 1949 A c:/2/testdata/todo.txt
9.025719 MB of 9.025719 MB (14 files) shown
-> 9.017815 MB (129 refs to 125 of 125 frags) after dedupe
-> 4.521800 MB compressed.
因此,這裏有我想要轉換的文件的步驟:
- 刪除前三行
- 刪除最後四行
- 剪下每行的前41個字母
- 將正斜槓替換爲反斜槓
- 刪除一切後,最後一個反斜槓(所以文件名)
- 鮮明的文件,使每個文件夾都只能有一次
因此,最終的結果應該是:
c:\2\testdata\
c:\2\testdata\Subfolder\
c:\2\testdata\Subfolder\History\
c:\2\testdata\Subfolder\History\2016-03-12\
非常感謝您的幫助
這是我目前的狀態:
::delete first 2 lines
for /f "skip=1 delims=*" %%a in (Listing.txt) do (
echo %%a >>Listing2.txt
)
::delete last 3 lines
@echo off
setlocal enabledelayedexpansion
set count=
for /f %%x in ('type Listing2.txt ^| find /c /v ""') do set /a lines=%%x-3
copy /y nul %tmp%\tmp.zzz > nul
for /f "tokens=*" %%x in ('type Listing2.txt ^| find /v ""') do (
set /a count=count+1
if !count! leq %lines% echo %%x>>%tmp%\tmp.zzz
)
move /y %tmp%\tmp.zzz Listing2.txt > nul
::Delete last cr flag at the end of the file
::@echo off
setlocal DisableDelayedExpansion
set "firstLineReady="
(
for /F "eol=$ delims=" %%a in (Listing2.txt) DO (
if defined firstLineReady (echo()
set "firstLineReady=1"
<nul set /p "=%%a"
)
) > Listing_Final.txt
del Listing2.txt /f /q
::take everything after line 1 und each line after character41
for /f "skip=1 usebackq delims=" %%i in ("Listing_Final.txt") do call :ProcessLine "%%i"
:PROCESSLINE
set "Zeile=%~1"
::put everything after 41
(echo %Zeile:~41%)>>"Listing_Final_Folder_Files_temp.txt"
del Listing_Final.txt /f /q
::Remove double entries
::@ECHO OFF
SETLOCAL
:: remove variables starting $
FOR /F "delims==" %%a In ('set $ 2^>Nul') DO SET "%%a="
FOR /f "delims=" %%a IN (Listing_Final_Folder_Files_temp.txt) DO SET $%%a=Y
(FOR /F "delims=$=" %%a In ('set $ 2^>Nul') DO ECHO %%a)>Listing_Final_Folder_Files_temp2.txt
::del Listing_Final_Folder_Files_temp.txt /f /q
現在我想反斜槓反斜槓轉換,但與此代碼它不工作:
::Replace/to \
echo off
setlocal enabledelayedexpansion
FOR %%f IN ("Listing_Final.txt") DO (
set old=%%f
echo !old!
set new=!old:/=\!
echo !new!>tesss.txt
echo.
)
的最後一步是在最後\刪除一切,但我沒有發現任何東西。
大..你已經打破它分解成任務。因此,開始研究如何完成任務1.當你明白了這一點後,繼續添加任務2,然後重複,直到完成任務。這不是一個代碼編寫服務,您可以在其中發佈您的要求和選擇語言的詳細列表,並且代碼猴會生成代碼以滿足它們。我們期望您在發佈之前自行尋找解決方案 –
我建議您訪問[ss64.com/nt](http://ss64.com/nt)並仔細查看命令'set ,找/ f,排序,也許如果' – LotPings
是的,你是對的,對不起,我的第一篇文章。這是我目前的狀態: – gitmoit