if文をループして ループ内で動作させるのに苦労しています。どんな助けもありがとう。forループで動作しないif文が
for %%i in (*.txt) do (
set filename=%%i
set filenametrunc=!filename:~0,28!
If %filename:~0,28%==ProjectLoad_Refresh_%today% (
Set fileName=%filenametrunc%
)
)
if文をループして ループ内で動作させるのに苦労しています。どんな助けもありがとう。forループで動作しないif文が
for %%i in (*.txt) do (
set filename=%%i
set filenametrunc=!filename:~0,28!
If %filename:~0,28%==ProjectLoad_Refresh_%today% (
Set fileName=%filenametrunc%
)
)
ワイルドカードパターンだけではなく*.txt
として"ProjectLoad_Refresh_%today%*.txt"
を使用していない理由を私は本当に理解していないが、このコードは動作するはずです:
@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "Today=2017-08-11"
for %%I in (*.txt) do (
set "FileName=%%I"
set "TruncatedName=!FileName:~0,28!"
if "!TruncatedName!" == "ProjectLoad_Refresh_%Today%" set "FileName=!TruncatedName!"
)
endlocal
一つの例外があります。ファイル名は、1つの以上の感嘆符が含まれていますマーク。
使用されているコマンドとその動作方法を理解するには、コマンドプロンプトウィンドウを開き、次のコマンドを実行して、コマンドごとに表示されているすべてのヘルプページをすべてよく読んでください。
echo /?
endlocal /?
for /?
if /?
set /?
setlocal /?
ありがとうございます。これは正常に動作します。提案に感謝します。 – yangk1351
'使用して変数を参照してください!'ではなく% 'の'例えば['SETLOCAL EnableDelayedExpansion'](https://ss64.com/nt/delayedexpansion.html)の範囲にある'!filename:〜0.28! 'と'!filenametrunc! ' – JosefZ
%で置き換えようとしました! if文では、SETLOCAL EnabledDelayedExpansionと一緒に動作しませんでした。 – yangk1351