質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

1回答

1924閲覧

batでのrenが上手くいかない

s806099d

総合スコア60

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2022/04/25 04:31

前提

batファイルを作成し、Windows10のタスクスケジューラで実行しています。
タスクスケジューラは「ユーザーがログオンしているかどうかに関わらず実行」「最上位の特権で実行」

実現したいこと

bat処理でファイルをリネームし、別フォルダに移動しようとしています。

発生している問題・エラーメッセージ

タスクスケジューラのトリガーが毎日4回ほど実行されていますが、
最初の1回が必ず移動の処理に失敗します。(以降3回はリネーム、移行が完了します)
ただし、errorlevelは0で出力されます。

試したこと

最初は
echo 送信 は正常終了しました >> %LGF%
MOVE C:\TEST\SD0100000001.dat C:\TEST\tmp%DATE:/=%_%time:~0,2%%time:~3,2%%time:~6,2%_SD0100000001.dat
echo DATファイルを退避しました。結果:%errorlevel% >> %LGF%
と実装していました。
これで
送信 は正常終了しました
DATファイルを退避しました。結果:0
と出力されました。

その後、MOVEコマンドが悪いのかと思い、
renでリネーム後、robocopyにて移動させる処理を入れました。
echo 送信 は正常終了しました >> %LGF%
ren C:\TEST\SD0100000001.dat %DATE:/=%_%time:~0,2%%time:~3,2%%time:~6,2%_SD0100000001.dat
echo ファイルリネーム結果:%errorlevel% >> %LGF%
robocopy C:\TEST C:\TEST\tmp *.dat /MOV
echo ファイル移行結果:%errorlevel% >> %LGF%

この時のログは
送信 は正常終了しました
ファイルリネーム結果:0
ファイル移行結果:0
となっており、すべて正常終了してるログが出ていますが、
C:\TEST\tmpにはSD0100000001.dat
で保存されていました。(robocopyは上手く行ってるがリネームされていない)

補足情報(FW/ツールのバージョンなど)

実行PC:Windows10 2004

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2022/04/25 04:47

コードは実行した物のコピペですか?
s806099d

2022/04/25 06:57

ほぼそうです。(一部ディレクトリ名のTESTはマスクしてあります)
otn

2022/04/25 07:09

ネットワークドライブがらみかと思ったのですが、違いましたか。
itagagaki

2022/04/25 09:43

ログファイルに %DATE:/=%_%time:~0,2%%time:~3,2%%time:~6,2% も出力して観察してみてはどうでしょうか。
s806099d

2022/04/27 00:58

itagagaki様 ありがとうございます。 echo 時間文字列:%DATE:/=%_%time:~0,2%%time:~3,2%%time:~6,2% >> %LGF% を追加しました。 結果は変わらず、リネーム前の名前でファイル移動のみ完了、 ログには以下の通りでした。 ================== 送信 は正常終了しました 時間文字列:20220427_ 85502 ファイルリネーム結果:0 ファイル移行結果:0
itagagaki

2022/04/27 03:31 編集

うーん MOVE C:\TEST\SD0100000001.dat C:\TEST\tmp%DATE:/=%_%time:~0,2%%time:~3,2%%time:~6,2%_SD0100000001.dat の前に echo MOVE C:\TEST\SD0100000001.dat C:\TEST\tmp%DATE:/=%_%time:~0,2%%time:~3,2%%time:~6,2%_SD0100000001.dat 入れてみますか ※必ず実際のコマンド行をコピペして頭に echo を追加
guest

回答1

0

自己解決

自己解決しました。
時間文字列を出力したときにヒントが出ておりました。
%DATE:/=%%time:~0,2%%time:~3,2%%time:~6,2%
この書き方だと、時間が1桁の際に0埋めされないため、
MOVE C:\TEST\SD0100000001.dat C:\TEST\tmp%DATE:/=%
%time:~0,2%%time:~3,2%%time:~6,2%_SD0100000001.dat
を記載すると日付文字列がスペースで二分割されることが上手くいかない要因でした。

予め
set time2= =0%等で0に変換することで正しい文字列に変換することができました。

投稿2022/05/02 01:08

s806099d

総合スコア60

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問