ファイルを開いて2行目を変更したいバッチスクリプトを書いています。文字列「cat」を見つけて、SETの値(%var%)に置き換えたいと思います。私はこれを2行目(または最初の3回)でのみ発生させたいと思っています。これをどのように行いますか?
John
質問する
7135 次
4 に答える
1
自分で解決するだけです。2 行目のみで var を検索します。
@echo OFF
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
SET filename=%1
set LINENO=0
for /F "delims=" %%l in (%filename%) do (
SET /A LINENO=!LINENO!+1
IF "!LINENO!"=="2" ( call echo %%l ) ELSE ( echo %%l )
)
しかし、私は cscript (vbscript または jscript) を使用することを好みます。
于 2008-12-05T15:17:55.593 に答える
0
まず第一に、これを達成するためにバッチファイルを使用することは厄介です(IMHO)。文字列の置換を行うには、とにかく外部ツールを使用する必要があります。代わりにスクリプト言語を使用します。
本当にバッチを使用したい場合は、これで開始できます。
于 2008-12-05T14:14:30.120 に答える
0
これは、ネイティブバッチスクリプトでは見苦しいでしょう。私はどちらか
これはVBScriptで行います。バッチファイルでこれが本当に必要な場合は、バッチスクリプトからVBScriptファイルを呼び出すことができます。VBScriptへの引数として%var%を渡すこともできます。
sedスクリプトを使用します。GnuWin32、GNU Utilities for Win32(私はこれらを使用)、CygwinなどのUnixコマンドのWindowsポートがあります。
于 2008-12-05T14:20:41.077 に答える
-2
次のようなスクリプトを作成します。
- 入力ファイルをスキャンします
- 2番目の出力ファイルに書き込む
- 入力を削除します
- 出力の名前を変更します
解析するdosコマンドに関しては、Google検索を実行して、適切な出発点を考え出しました。
@echo off
setlocal enabledelayedexpansion
set file=c:\file.txt
set output=output.txt
set maxlines=5000
set count=0
for /F "tokens=* usebackq" %%G in ("%file%") do (
if !count!==%maxlines% goto :eof
set line=%%G
set line=!line:*000000000000=--FOUND--!
if "!line:~0,9!"=="--FOUND--" (
echo %%G>>"%output%"
set /a count+=1
)
)
(Intarwebnetから盗まれました)
于 2008-12-05T14:19:40.157 に答える