10

タイトルにあるように、テキストファイルの最初の3行を削除するにはバッチファイルが必要です。

例えば:

A    
B    
C    
D    
E   
F    
G

この例では、行とともにA、B、Cを削除する必要があります

4

5 に答える 5

11

これはそれを行う必要があります

for /f "skip=3 delims=*" %%a in (C:\file.txt) do (
echo %%a >>C:\newfile.txt    
)
xcopy C:\newfile.txt C:\file.txt /y
del C:\newfile.txt /f /q

これにより、最初の3行が削除されたファイルが再作成されます。

ユーザーを最新の状態に保つために、メッセージをvbscriptスタイルでバッチファイルに統合するか、コマンドプロンプトでメッセージを出力することができます。

@echo off
echo Removing...
for /f "skip=3 delims=*" %%a in (C:\file.txt) do (
echo %%a >>C:\newfile.txt
) >nul
echo Lines removed, rebuilding file...
xcopy C:\newfile.txt C:\file.txt /y >nul
echo File rebuilt, removing temporary files
del C:\newfile.txt /f /q >nul
msg * Done!
exit >nul

お役に立てれば。

于 2012-07-11T08:43:57.457 に答える
3

sedを使用して、4行目からのみ印刷します(編集: Un*xを使用する場合のみ:)

$ sed -e '4,$p' in.txt 
于 2012-07-11T08:45:36.520 に答える
0

最初の行をスキップして最後の行を末尾にしたい場合は、 http://www.harchut.de/download/ms-dos/skip-tail-flatfile-example.zipで私のコードを使用できます。

set L_TRIMFILE_CNT=0
set L_TRIMFILE_TMPFILE=work.countrows.find.tmp
find /c /v "" %P_TRIMFILE_INFILE% > %L_TRIMFILE_TMPFILE%
for /f "skip=1 tokens=3* " %%a in (%L_TRIMFILE_TMPFILE%) do (
  if %L_TRIMFILE_CNT% == 0 set L_TRIMFILE_CNT=%%a
)
del %L_TRIMFILE_TMPFILE%
set /a L_TRIMFILE_EOF=%L_TRIMFILE_CNT%-%P_TRIMFILE_TAIL%
findstr /n .* "%P_TRIMFILE_INFILE%" > %L_TRIMFILE_TMPFILE%
if exist %P_TRIMFILE_OUTFILE% del %P_TRIMFILE_OUTFILE%
set V_TRIMFILE_SKIP="skip=%P_TRIMFILE_SKIP% tokens=1* delims=:"
if %P_TRIMFILE_SKIP% equ 0 set V_TRIMFILE_SKIP="tokens=1* delims=:"
for /f %V_TRIMFILE_SKIP% %%a in (%L_TRIMFILE_TMPFILE%) do (
  if %%a leq %L_TRIMFILE_EOF% if exist %P_TRIMFILE_OUTFILE% @echo.%%b>>%P_TRIMFILE_OUTFILE%
  if %%a leq %L_TRIMFILE_EOF% if not exist %P_TRIMFILE_OUTFILE% @echo.%%b>%P_TRIMFILE_OUTFILE%
)
del %L_TRIMFILE_TMPFILE%

追加のユーティリティを使用せずに、フラットファイルの行をスキップまたは末尾にすることができます。

于 2015-05-22T13:27:26.700 に答える