ディレクトリを作成し、ファイル名に基づいて画像ファイルを移動するバッチファイルを作成しようとしています(これは、起こった日付です)。変数が正しく設定されていないという問題が発生しています。私は以下のようにコードを実行し、ファイルは移動されません。Forループからのデータの解析 - バッチCMD
@echo Off
setlocal enabledelayedexpansion
REM Collect list of file names in current directory that have the .bmp file extension. Output to text file.
dir /b "*.bmp" >BMP.txt
REM For loop examines the text file for individual file names.
FOR /F "tokens=1" %%# in (C:\Users\jhavekos\Documents\Pinger\BMP.txt) do (
REM SET variable "#" to equal "token"
Set "token=%%#&&"
REM Extract the first 4 characters (year) from the file name and set is to variable "tokenyear"
Set "tokenyear=%%token:~0,4%%"
REM Extract the month characters from the file name and set the variable as "tokenmonth"
Set "tokenmonth=%%Token:~4,2%%"
REM Copy from current directory to: Current Directory\ImageTakenYear\ImageTakenMonth\
REM Any bmps with token year and token month get copied.
Robocopy .\ ".\%%TokenYEAR\%%TokenMonth" %%TokenYEAR%%TokenMonth*.bmp
REM Echo the variable tokenyear
Echo %%tokenyear
REM Echo the variable tokenmonth
Echo %%tokenmonth
)
pause
出力の最後の行を以下にリストされている:
%tokenmonth
%tokenyear
robocopyを出力としては、次のとおりです。 をあなたは私が移入する変数を必要と見ることができるように。
-------------------------------------------------------------------------------
Started : Fri Sep 09 14:41:38 2016
Source : C:\Users\jhavekos\Documents\Pinger\
Dest : C:\Users\jhavekos\Documents\Pinger\%TokenYEAR\%TokenMonth%\
Files : %TokenYEAR%TokenMonth*.bmp
Options : /COPY:DAT /R:1000000 /W:30
変数を正しく設定するにはどうすればよいですか? ありがとうございます!
遅延拡張を有効にしている間は、正しく使用していません。この問題は、StackOverflowで週に6回のアドレスを取得します。 'Set" tokenyear =!token:〜0,4! "' – Squashman
@Squashmanあなたは正しいですか?その(そしていくつかの大文字の問題)が問題を解決しました。迅速なご協力ありがとうございます。必ず使用する必要があることを正しく理解してください! FORループ操作では%%の代わりに?また、私はこれらの他の質問を見つけられなかったことを謝罪します。私は適切な場所で検索していなかったと思います。私は "それ"の男であることが嫌い! – Haveycode
倍率は、FOR変数でのみ使用されます。環境変数はパーセントで囲まれています: '%var%'。あなたがFORコマンドのようなコードブロックの中にいて、あなたが変数を操作しているなら、遅延拡張を使う必要があります。その場合、 '!var!'を使用します。 – Squashman