8

現在、バッチで変数を取得し、ファイル名のみを解析する方法を探しています。

たとえば、別のアプリケーションからバッチ ファイルに -s パラメータを渡します。このパラメータは、後でソース変数に設定されます。通常、ソース ファイル変数には、C:\Program Files\myapp\Instance.1\Data\filetomove.ext のようなものが含まれます。

変数の最後から最初の「\」まで読み取り、結果を新しい変数ファイル名に設定すると想定していますが、「for /f」コマンドを正常に使用できませんでした。

どんな助けでも大歓迎です!

更新: 標準の XP または Windows 2000/2003 のみが利用可能です... (リソース キットがインストールされているとは想定できません)。

4

2 に答える 2

9

スクリプトへの引数、つまり %1、%2 などとして入ってくる場合、次のようにファイル名と拡張子だけを変数に抽出できます。

set FILENAME=%~nxN

ここで、N は引数のインデックスです。たとえば、次のスクリプトは最初の引数のファイル名だけをエコーし​​ます。

@echo off
set FILENAME=%~nx1
echo %FILENAME%
于 2009-01-18T04:54:15.477 に答える
2

わずかに改善されたバージョン:

set FILENAME="%~nx1"

括弧を追加すると、「&」などの特殊文字がバッチ実行中に干渉しないようになります。

于 2011-10-27T23:33:53.550 に答える