私は、建物内のリモート コンピューターでいくつかの操作を実行するバッチ ファイルを作成しています。それらはすべて同じプレフィックスで名前が付けられていますが、末尾の番号が変わります (01~65)。私は、数字に基づいてバッチ ファイル ループを作成するためのオンライン チュートリアルに従ってみましたが、次のような結果になりました。
FOR /l %%N in (1,1,65) do (
set HOSTNAMETOUSE=prefix-%%N
ECHO %HOSTNAMETOUSE%
)
これは 10 に達した後は 2 桁になるため、うまく機能します。必要なのは、命名スキーマに一致するように、数字が1-9
として表示されることです01-09
。基本的に、最初の 9 回の反復では、先頭の 0 の 1 桁が必要です。Windows バッチ ファイルを使用してこれを実現するにはどうすればよいですか?
答え1
投稿されたコードは、%HOSTNAMETOUSE%
ステートメントが解析されるときに展開され、ループが実行される前に括弧で囲まれたブロック全体が 1 回のパスで解析されるため、おそらく機能しません。したがって、展開された値はすべての反復で一定です。
実行時に値を取得するには、遅延展開を使用する必要があります。
@echo off
setlocal enableDelayedExpansion
FOR /l %%N in (1,1,65) do (
set HOSTNAMETOUSE=prefix-%%N
ECHO !HOSTNAMETOUSE!
)
必要に応じて 0 をプレフィックスとして追加します。
0 が 1 つ以上必要になることはないので、IF ステートメントを使用できます。
@echo off
setlocal enableDelayedExpansion
FOR /l %%N in (1,1,65) do (
if %%N lss 10 (set HOSTNAMETOUSE=prefix-0%%N) else set HOSTNAMETOUSE=prefix-%%N
ECHO !HOSTNAMETOUSE!
)
しかし、数字の幅が2桁を超える場合は、これは便利ではありません。より一般的な解決策は、次の文字列を追加することです。ん希望の長さのゼロを削除し、部分文字列操作を使用してん右端の数字。
@echo off
setlocal enableDelayedExpansion
FOR /l %%N in (1,1,65) do (
set "n=00%%N"
set "HOSTNAMETOUSE=!n:~-2!
ECHO !HOSTNAMETOUSE!
)
このソリューションは、実質的に任意の数の先頭のゼロに簡単に拡張できます。
答え2
私はこれを次のようにします:
- すべての数字に「0」を追加します(つまり「01」だけでなく「065」も追加します)
- この文字列の最後の 2 文字の部分文字列
バッチ ファイルで部分文字列を取得する方法 (最後の 2 文字):
SET string=abcd
echo %string%
SET string2=%string:~-2%
echo %string2%
答え3
@dbenham の回答に新しいものは何もありません。コマンド ラインから収集した値変数をいくつか作成し、コピー アンド ペーストしやすいようにここに掲載しただけです。上記のクレジットはすべて @dbenham によるものです。
set first=%1
set last=%2
set len=%3
setlocal EnableDelayedExpansion
FOR /l %%N in (%first%, 1, %last%) do (
set "n=0000000000000%%N"
set "padded=!n:~-%len%!
echo !padded!
)
答え4
使用ZtreeWinを押して正しいディレクトリに移動し\、を押してEnterディレクトリに入り、CtrlT名前を変更したいファイルにタグを付け、CtrlR名前を変更します。????<0>*.*
例えば:
foo-0-bar.jpg -> foo-00-bar.jpg
foo-1-bar.jpg -> foo-01-bar.jpg
foo-2-bar.jpg -> foo-02-bar.jpg
...
上記の例では、????
最初の 4 文字 (foo-) を表し、<0>
5 番目の位置にゼロを挿入し、*.*
変更されないファイル名の残りの部分 (-bar.jpg) を表します。
ファイルにタグを付ける:
ファイル名の変更:
ZTreeWinは、伝説的な XTreeGold(tm) を忠実にモデル化した強力な 32 ビットおよび 64 ビットのテキスト モード ファイルおよびディレクトリ マネージャーですが、今日の一般的なオペレーティング システム向けに強化されています。