1

ディレクトリ パスのみで構成される文字列の解析に問題があります。たとえば、

私の入力文字列はAbc\Program Files\sample\

私の出力はAbc//Program Files//sample

スクリプトは、任意の長さの入力パスに対して機能する必要があります。つまり、任意の no を含めることができます。サブディレクトリの。(例: abc\temp\sample\folder\joe)

多くのリンクでヘルプを探しましたが、役に立ちませんでした。FORコマンドは1行全体または文字列のみを抽出するように見えます(FOR構文で「トークン」キーワードを使用する場合)が、私の問題は、入力パスの長さを認識していないため、no. トークンの。

私の考えは、区切り文字として \ を使用し、その前後の各単語を抽出し ()、文字列の最後に到達するまで // と共に単語を出力ファイルに入れることでした。

以下を実装してみましたが、うまくいきませんでした。

@echo off

FOR /F "delims=\" %%x in (orig.txt) do (
    IF NOT %%x == "" echo.%%x//>output.txt    
)

ファイル orig.txt には、Abc\Program Files\sample\ という 1 行のみが含まれています。

私が得る出力には、Abc //のみが含まれています

上記の出力には、「Abc//」の後に空白スペースが含まれています</p>

私の望ましい出力は次のようになります: Abc//program Files//sample//

誰でもこれで私を助けてもらえますか?

よろしく、
テクネクスト

4

4 に答える 4

2

パターンマッチングを試しましたか?私はperlとJavaで、すべての「\」を見つけてそれらを「//」に置き換える単純な置換を実行できることを知っています。

perlの例:

my $var = "Abc\Program Files\sample\"
$var  =~ tr/\\/\/\//; 

パターンマッチングまたは正規表現を検索するだけです

于 2010-06-15T17:06:46.083 に答える
1

単純な文字列置換を使用できます。

C:\>set myvariable=Abc\Program Files\sample\    

C:\>echo %myvariable%
Abc\Program Files\sample\

C:\>set myvariable=%myvariable:\=//%

C:\>echo %myvariable%    
Abc//Program Files//sample//
于 2011-11-02T14:47:15.620 に答える
0

ループと一時ファイルを使用すると、次のシナリオで機能します。

@echo off > output.txt
FOR /F "tokens=1,* delims=\" %%x in (orig.txt) do ( 
IF NOT %%y=="" echo %%x//%%y>>output.txt
)
:loop
@echo off > temp.txt
set /a stop=1
FOR /F "tokens=1,* delims=\" %%x in (output.txt) do (
IF NOT "%%y"=="" (
echo %%x//%%y>>temp.txt
set /a stop=0
) ELSE (echo %%x>>temp.txt)
)
IF NOT %stop%==1 (
move /Y temp.txt output.txt
) ELSE (goto end)
goto loop
:end
move /Y temp.txt output.txt

この入力を考えると

Abc\Program Files\sample\
Another\Example\\\

次の出力が得られます。

Abc//Program Files//sample
Another//Example

かなり醜いですね。^^

于 2010-06-16T08:48:03.893 に答える
0

ご入力いただきありがとうございます。Shell や Perl で簡単にできることはわかっていますが、とにかく解決策を見つけました。

ここにあります:


nul>output.txt と入力します

FOR /F "usebackq tokens=*" %%x in ("orig.txt") do (
    set LINE=%%x
    call set LINE=%%LINE:\=//%%
    call echo:%%LINE%%
) >>output.txt

ホアンありがとう。あなたの返信を見たとき、私は投稿しようとしていました。

于 2010-06-16T09:35:10.677 に答える