2015-01-13 49 views
7

有沒有一種方法可以從文件中提取/複製第一行X行並使用windows命令提示符通過單個命令將它們輸入到另一個文件中?
更多+ X [file_containing數據]> [file_to_export_data_to]使用單個窗口命令從文件中提取N行

如果頭命令會的工作,我想我可能只是這樣做:

我可以使用刪除線的第X號
頭 - X [file_containing data]> [file_to_export_data_to]

但是,不幸的是不起作用。

如果Windows有一個「少」的命令,但再次沒有運氣,這將是很好的。

我是一個完全新手,當涉及到這個東西,所以我敢肯定我錯過了一些明顯的東西。我不想安裝任何東西或使用命令提示符以外的其他東西。

由於

+3

PowerShell的:'獲得內容文件|選擇對象 - 第一10「。 (PowerShell是從Windows 7內置的。) –

+0

POWERSHELL> get-content int.txt | select-object -first 10> out.txt – sdd

回答

1
Set Inp = WScript.Stdin 
Set Outp = Wscript.Stdout 
x = 0 
    Do Until Inp.AtEndOfStream 
       x = x + 1 
     OutP.WriteLine Inp.Readline 
       If x = 5 then Exit Do 
    Loop 

這將打印線1〜5.要使用

cscript //nologo <path to script.vbs> <inputfile >outputfile 
2
(@FOR /f "tokens=1* delims=:" %a IN ('findstr /n "^" "standardwaffle.txt"') DO @IF %a leq 7 ECHO(%b)>u:\junk.txt 

將第一7行的standardwaffle.txt提取到u:\junk.txt所以這裏它是在一個cmd線 - 但我不敢勉強輸入。

它還會刪除源代碼行上的任何前導:

@ECHO OFF 
SETLOCAL 
IF %1 lss 0 (SET /a line=-%1) ELSE (SET /a line=%1) 
FOR /f "tokens=1* delims=:" %%a IN ('findstr /n "^" "%~2"') DO IF %%a leq %line% ECHO(%%b 

GOTO :EOF 

此批,保存爲head.bat放在任何地方你的道路上會允許你使用

head -n standardwaffle.txt >junk.txt 

到第一nstandardwaffle.txt解壓到junk.txt

-將是可選的

但是這涉及在您的機器上安裝批處理。這是否被你的「不安裝」要求所禁止,或者「安裝」僅適用於第三方公用程序?

+0

批處理文件似乎首先讀取整個文件,如500Mb的文件需要很多文件,並且在小文件中可以立即生效。另一方面,由dbenham提供的Powershell解決方案似乎可以快速輸出目標部分,因此在讀取文件的其餘部分時可以中斷。 –

13

您可以使用PowerShell從CMD.EXE控制檯:

powershell -command "& {get-content input.txt|select-object -first 10}" >output.txt 

您可以創建一個DOSKEY宏以使其更容易在命令行中使用:

doskey head=powershell -command "& {get-content $1|select-object -first $2}" 

用法:

head input.txt 10 >output.txt 

但是,您不能在批處理腳本中使用DOSKEY宏。

你可以創建一個頭。蝙蝠腳本,而不是,並把它包含在你的PATH的文件夾中:

head.bat

@powershell -command "& {get-content %1|select-object -first %2}" 

在命令行中,你可以使用head input.txt 10 >output.txt

從批處理腳本內,你會使用call head input.txt 10 >output.txt

我選擇不要輸出文件作爲參數,以防您只需將結果顯示在屏幕上而不是寫入到一個文件。

8

最簡單的一個命令解決方案是使用Powershell Get-Content。

N - 行數。

從文件的開頭:

Get-Content -Head N file.txt 

從文件的末尾:

Get-Content -Tail N file.txt 
+2

我得到「無法找到與參數名稱'Head'匹配的參數。」錯誤。 –

+0

檢查版本的PowerShell,我認爲它是舊的。或者在命令的某處輸入錯字。 – Janusz

1

爲了得到正確的UTF8輸出,做在PowerShell中

chcp 65001 

$OutputEncoding = New-Object -typename System.Text.UTF8Encoding 

get-content input.txt -encoding UTF8 |select-object -first 10000 > output.txt 

以下這將獲得前10000行input.txt(utf8格式的文件)以正確的編碼output.txt。

0

您可以使用此:

break>"%temp%\empty"&&fc "%temp%\empty" "%file_to_process%" /lb X /t |more +4 | findstr /B /E /V "*****" 

,你應該用行替換X你want.Or命名此head.bat

break>"%temp%\empty"&&fc "%temp%\empty" "%file_to_process%" /lb %~1 /t |more +4 | findstr /B /E /V "*****" 
相關問題