1

私はバッチプログラミングが初めてです。ファイル名とその拡張子を文字列から検索したい。パスが変数の中にある場合の回答が表示されます。

    for /f %%a in ('dir /B') do (
    file_name= %%~nxa
    )

しかし、次のコードは機能しません。

    stringvar="c:/folder1/folder2/abc.txt"
    file_name=%%~nxstringvar

stringvar と %% と ~nx を式で使用して、多くの順列と組み合わせを試しました。しかし、ファイル名を取得できませんでした。

必要性を理解するには、以下のコードを検討してください。

    stringvar="c:/folder1/folder2/abc.txt"
    filename=getFileName(stringvar)

どんな答えや提案も大歓迎です。よろしくお願いします

4

1 に答える 1

2

特別な var パラメーターは、特別な変数 (%0、%1 など) および "FOR" 変数専用です。そのため、最初に引数などの変数を渡すものを呼び出すか、FOR を実行する必要があります。

@Echo OFF
SET "stringvar=c:\folder1\folder2\abc.txt"
Call :sub "%stringvar%"
Pause&Exit

:sub
Echo FILENAME: "%~nx1"
GOTO:EOF

編集:「/」スラッシュを使用しないでください。Windowsを使用しており、行っているようにvarを囲まないでください。私の例を参照してください。

于 2012-11-22T19:22:02.040 に答える