この複雑なことをバッチファイルから直接やりたければ、習得するのが面倒です。
研究リスト:
FOR
SET
CALL
あなたはファイル名を取得するにはFOR
コマンドを使用することをお勧めします。 %~
のオプションに注意してください。例:
set BAT_DGNFNM=
for %%F in (*.dgn) do set BAT_DGNFNM=%%~nF
これにより、環境変数BAT_DGNFNM
がベースファイル名に設定されます。しかし、それはそう本当に、あなたはそれがファイルごとにサブルーチンを呼び出すために必要な、すべてのファイルをループ:
for %%F in (*.dgn) do call :DODGN "%%~dpnxF" "%%~nF"
これはサブルーチン:DODGN
を呼び出し、それを2引用カプセル化されたパラメータを渡します。最初のファイルは完全修飾ファイル名で、2番目は基本ファイル名です。
その後、あなたはサブルーチンで処理する実際のファイルを実行します。
:DODGN
set BAT_DGNFNM=%1
set BAT_DGNBNM=%2
REM Do stuff with BAT_DGNBNM using SET commands
GOTO :EOF
をあなたは、メインループが行われた後、あなたがサブルーチンに「フォールスルー」していないことを確認する必要があります、そして、あなたがしなければなりません完了したらので、このようなものになり、ご使用の環境変数をクリーンアップ:
@echo off
for %%F in (*.dgn) do call :DODGN "%%~dpnxF" "%%~nF"
goto ENDIT
:DODGN
set BAT_DGNFNM=%1
set BAT_DGNBNM=%2
REM Do stuff with BAT_DGNBNM using SET commands
GOTO :EOF
:ENDIT
set BAT_DGNFNM=
set BAT_DGNBNM=
幸運を - このようなものが複雑に得ることができます。
決勝リマインダー:あなたの学習曲線のほとんどはSET
コマンドとなります - それはあなたが1つの環境変数のうち、部分文字列を抽出する方法だと、別のに入れて、テキスト置換を行う、など
このようなものが道でありますVBSやPowerShellでは簡単です。
バッチで書かなければなりませんか?あなたのシステムにはPythonやPHPなどのスクリプト言語がインストールされていますか?あるいは、システムにWindows 10のbashシェルがありますか?バッチは物事を書くにはちょっとひどい方法であり、書く/デバッグするのが紛らわしく、本当に意味をなさないものです。そのマシンにC#コンパイラがありますか?バッチベースのソリューションよりも優れたソリューションはどれかです。 – HumbleWebDev
建物番号は常にかっこ内にありますか?あなたはカッコを含めてディレクトリ名を '(建物番号)'にするつもりですか?また、コードを表示せずにコーディングに関する質問をすることは、ここでは話題にはなりませんので、問題が発生しているコードを含めるには、投稿を[編集](https://stackoverflow.com/posts/45942579/edit)してください。問題の内容を正確に説明して – Compo
申し訳ありませんが、私はStackoverflowに新しく、私は誰かにそれを私に助けを要求しているコードがありません。しかし、あなたの質問に答えようとすると、括れは単にプレースホルダに過ぎません。 Unholy Programmer - 私たちはCMDだけを使用する作業機械を使用します。したがって、ファイル名100-assig-flr-plan.dgnは、100フォルダーのフロアプランサブフォルダーに移動する必要があります。 –