2012-02-21 11 views
8

どうすればよいですか?私は試しました:バッチファイルでvarの最初の3文字を削除しますか?

たとえば、「He​​llo World」と入力すると「lo World」と表示されます。

私はあまりにも曖昧でした。このコードは実際のコードではありませんが、これは次のとおりです。

@echo off 
setlocal EnableDelayedExpansion 
set /p file="" 
set cnt=0 
for /F "delims=" %%j in (%file%.txt) do (
    set /A cnt+=1 
    set line!cnt!=%%j 
) 
set cde=0 
:code 
set /a cde+=1 
set line=!line%cde%! 
if %line:~0,9% == err echo.%line:~3% 
goto code 

は、私はちょうどそれが短いだけでなく、まだエラーを示す作るしようとしていました。

+0

何も間違っています、私のために働く。 –

+0

私のためにも動作します。 – Kobra

答えて

7

私はそれを試してみましたが、期待通りに動作します。何を手に入れていますか? 1)あなたの第二のループからの終了条件のいくつかの種類: -

C:\>type test.bat 
set /p var="" 

set var=%var:~3% 

echo %var% 
C:\>test 

C:\>set /p var="" 
Hello World 

C:\>set var=lo World 

C:\>echo lo World 
lo World 

C:\> 

だから、あなたはおそらく二つのことを必要とするように思えます。あなたのコードから希望するものを知らない:codeラベルと整合条件にヒットしたときのためにgoto code(すなわち、if %line:~0,3% == err) の間に、私はときにこれが一時停止して終了します以下

if %line:~0,3% == err echo.%line:~3% & pause & exit 

のようなものを置きます一致する行が見つかりません

2)行末に一致するものがあれば、何らかの種類の終了条件があります。私の疑惑は、あなたの入力ファイルがおそらくこの条件を満たしていないため、あなたが見ているエラーを引き起こしているのでしょうか。

+0

これは正確なコードではありませんでした...それは単なる例です。私は何かを試してみましょう。 – BBMAN225

+0

ここで '%%line:〜0,3%== err echo。%line:〜3%>>"%file%.bat "'これはエラーが発生する部分です。 – BBMAN225

+1

私は、あなたが持っているコードが入力ファイルの内容を1行ずつ読み取っていて、エラーをチェックしてループしているので、あなたがエラーに遭遇している可能性があると思います。問題は、あなたのコードが決して止まらないということです。それは永遠にループを維持しています。なぜなら、おそらく**#line:〜3のようなものがエラーを投げているからです。現時点では〜3は予期せぬものでした**あなたが存在しない行を処理しようとしていることを伝えています。終了条件が必要です。私は助けたいと思いますが、コードを実行したいことを明確にしていません。 –

関連する問題