2015-01-13 8 views
7

コマンドウィンドウを使用して1つのコマンドで別のファイルにファイルと入力し、そこからラインの拳X番号をコピー/抽出するそこの方法はコマンドプロンプトですか?抽出Nラインが

私が使用してラインの最初のX番号を削除することができます。頭コマンドがうまくいく場合
より+ X [file_containingデータ]> [file_to_export_data_to]

を私はちょうどこれを行うことができると思う:
頭 - X [file_containingデータ]> [file_to_export_data_to]

しかし、それは残念ながら動作しません。

Windowsが「少ない」コマンドが、再び運を持っていた場合、それは素晴らしいことです。

私は何かを明らかに欠けていると確信しているので、それはこのようなものになると私は完全に初心者です。私は何もインストールしないか、コマンドプロンプト以外のものを使用したくない。

おかげ

+3

のPowerShell:あなたはこのhead.bat名前want.Or線でXを交換する必要があり

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

'取得-コンテンツファイルを|オブジェクトを選択する - 第1に選択する。 (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 

これは

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 

を使用する5にライン1を印刷するので、ここでそれが1つのcmd行にあるstandardwaffle.txtu:\junk.txtへの最初の7行を抽出することになります - しかし、私はそれを確実に入力することには反対します。

また、ソースライン上の任意の有力:を削除します。あなたのパス上のどこにでも配置head.batとして保存

@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 

このバッチは、あなたが-はオプションとなりjunk.txt

standardwaffle.txtの最初のn行を抽出するために

head -n standardwaffle.txt >junk.txt 

を使用することができるようになる

けどこれには、マシンにバッチをインストールすることが含まれます。これはあなたの「インストールしない」要件によって禁止されているのですか、サードパーティのユーティリティ専用の「インストール」ですか?

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

あなたはそれが簡単にコマンドラインから使用できるようにするマクロDOSKEYを作成することができます:あなたはcmd.exeのコンソールからPowerShellを使用することができます

+0

バッチファイルはファイル全体を最初に読み取るように見えますが、500Mbのファイルではそれが大きくなり、小さなファイルでは即座に動作します。一方、dbenhamによるPowershellのソリューションは、意図した部分を速く出力するように見えるので、残りのファイルを読み込んでいる間に中断することができます。 –

13

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 

で次の操作を行いますこれによりinput.txt(utf8形式のファイル)の最初の10000行が正しいエンコードでoutput.txtに取得されます。

0

あなたは、この使用することができます。

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