我有一個包含一些動物和水果名稱的 txt 檔案。* 包含水果和 # 包含動物。就像下面一樣:-
* apple
# cat
* banana
# dog
* mango
# lion
* graps
我想對串列進行排序并像下面給出的表格一樣寫:-
* apple # cat
* banana # dog
* mango # lion
我for為此使用回圈:
for /f "useback eol=* tokens=1-5 delims= " %%a in ("my text.txt") do (
for /f "useback eol=# tokens=1-5 delims= " %%c in ("my text.txt") do (
Echo %%a %%b
))
但它呼應重復。
uj5u.com熱心網友回復:
請注意,tokens它們是單行的一部分。對于第一行, Token1= *、 token2= apple、 token3 到 5 沒有定義。彼此相同。對于您的示例,tokeins=1,2可以,但是我決定使用1,*名稱為兩個(或更多)單詞的動物或水果(例如dragon fly)
for /f "usebackq tokens=1,*" %%a in ("my text.txt") do (
if "%%a" == "*" (
<nul set /p "=%%a %%b "
) else (
echo %%a %%b
)
)
echo\
這使用了一個特殊的技巧來撰寫一個沒有換行符的字串,以防該行以*
( <nul set /p "=string")開頭
當然,這取決于源文本檔案中的交替*和#行。
uj5u.com熱心網友回復:
這可以在cmd或batch-file使用以下完成。如果您使用的是受支持的 Windows 系統,則可以使用 PowerShell。
此代碼將整個檔案內容放入記憶體中,并將其拆分為*字符陣列。跳過第一個空陣列元素。然后,和行NewLine之間被替換為幾個空格字符。*#
powershell.exe -NoLogo -NoProfile -Command ^
"(Get-Content -Path '.\fruit-animal.txt' -Raw) -split '\*' | Select-Object -Skip 1 | %{ '* ' $_ -replace [Environment]::NewLine, ' '}"
這是資料檔案和示例執行。
C:>TYPE .\fruit-animal.txt
* apple
# cat
* banana
# dog
* mango
# lion
* graps
C:>powershell.exe -NoLogo -NoProfile -Command ^
More? "(Get-Content -Path '.\fruit-animal.txt' -Raw) -split '\*' | Select-Object -Skip 1 | %{ $_ -replace [Environment]::NewLine, ' '}"
apple # cat
banana # dog
mango # lion
graps
除非您有一個大檔案,否則這可能對您有用。
如果使用PowerShell Core http://github.com/PowerShell/Powershell(推薦),修改為:
pwsh.exe -NoLogo -NoProfile -Command ^
"(Get-Content -Path '.\fruit-animal.txt' -Raw) -split '\*' | Select-Object -Skip 1 | %{ '* ' $_ -replace [Environment]::NewLine, ' '}"
uj5u.com熱心網友回復:
任務描述、示例輸入和輸出資料以及發布的代碼根本不匹配。因此,很難理解任務的真正含義。
下面的第一個批處理檔案代碼用于從資料檔案中讀取所有非空行,并將每個非空奇數行與每個非空偶數行合并在一起,最后用包含合并行的臨時檔案替換源資料檔案。
@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "DataFile=Data.txt"
if not exist "
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/372735.html
上一篇:安裝(startup.bat)腳本無法啟動我的應用,出現錯誤
下一篇:OPARego問題計數
