2012-09-13 1 views
5

ID,modeldateのファイルがあります。ファイルは10000_9999-99_10-01-2011.zip10000ID9999-99model、もちろん10-01-2011date)のような形式です。テキストファイルの2行分を読み込んで一時変数として保存する方法

これらのファイルのdateを変更しますが、セッション間の間隔を同じIDに維持したいとします。たとえば、2つのセッションの日付が1/1/2011および2/1/2011で、最後のセッションの日付を8/1/2012に更新したい場合、最初のセッションの日付は7/1/2012になります。

現在、私のコードは次のようになります。

@echo off 
setlocal enabledelayedexpansion 
del filedates.txt 
FOR /F "tokens=1,2,3,4,5 delims=_" %%a in (filenames.txt) do @echo %%c >>filedates.txt 
FOR /F "tokens=1,2,3 delims=-" %%a in (filedates.txt) do (
    echo %%a%%b 
) 

出力は(YEARMONTH)次のようになります。

201107 
201109 
201204 
etc.. 

私はfiledates.txtでラインを読むために探していましたこの日付を変数として格納し、次の行を読み込み、別の変数として格納します。そうすることで、2つの変数を比較してどちらが大きいかを知ることができ、プロセスは継続します。

+2

MS-DOSは '/ F'パラメータを使用して拡張forループをサポートしていないため、Windows(NT以降)を使用している必要があります。 –

+0

あなたは明らかに( 'setlocal'と' for/f'の構文に基づいて)かなり最近のバージョンのWindowsを実行しているので、あなたは 'PowerShell'でこれをやっていません。はるかに簡単になりますか? –

+0

私はほぼ完成したコードを作成しています。このコードはすべてコマンドラインを使って書かれています。そうでなければpowershell –

答えて

2

一度に2つの行を読み込む簡単な方法の1つは、入力ファイル内の行を1つずつfor /fループで処理し、偶数行だけに反応させることです。ここでサンプルコードは次のとおり

@echo off 
setlocal enabledelayedexpansion 
set evenflag=1 
for /f "tokens=*" %%x in (filedates.txt) do set x1=!x2! && set x2=%%x && (
set /a evenflag^^=1 && if !evenflag!==1 (
    rem Do something with !x1! and !x2! 
)) 

ここで可変evenflagは、現在の行番号が偶数(偶数ライン用1、奇数ラインに0)であるかどうかを示すブールフラグです。 x1およびx2は、現在読み込まれている行のペアを保持します。

関連する問題