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

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

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

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

バッチファイル

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

Q&A

解決済

1回答

2298閲覧

remコマンドの後にPath指定をしたechoとcopyコマンドを実行するとThe system cannot find the path specified.のエラーとなる原因を知りたい。

asukaraisu

総合スコア2

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

バッチファイル

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

0グッド

0クリップ

投稿2023/02/11 11:58

編集2023/02/11 13:57

実現したいこと

remコマンドでコメントを入力した後、Path指定したechoやcopyをコマンドを実行したときにThe system cannot find the path specified.のエラーが出る原因を知りたい。

前提

batファイルで、ログ出力とファイルコピーを行うプログラムを作成したのですが、remコマンドでコメントを記述した後に、Path指定をしたechoとcopyコマンドを実行すると「The system cannot find the path specified.」というエラーが表示されて処理が実行されません。

自分でも原因を調べてみたのですが、一番下の「エラーが表示されないソースコード」で記述したコードように、remコマンドの後に1行空けてからechoやcopyコマンドを記述するとエラーが表示されずに処理が実行されることが分かりました。
なぜremコマンドの後に1行空けるとエラーが出ずに正常に処理が実行され、1行空けずに記述するとエラーで処理が実行されないかを知りたいです。

追記
下に追加した「エラーが表示されないソースコード2」のようにコメントを「ログに出力する日時情報」に変更すると改行を消してもなぜか正常に実行されます。
またそのコードのコメントをBackSpaceで消して「エラーソースコード」のように「ログに出力」というコメントに変更するとエラーが表示されます。(打ち間違えという問題を起こさないためにBackSpaceで消してコードを保存しています)
なぜかremの後のコメントの内容で実行が正常になるかエラーになるかが決まってしまいます。(コメントアウトされている内容で処理がエラーになってしまうのが謎です)

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

エラーメッセージ The system cannot find the path specified.

該当のソースコード

ソースコード @echo off chcp 65001 cd /d %~dp0 rem ログに出力する日時情報 rem 変数概要: ①logdate:ログ日付 ②logtime:ログ時間 ③logtoday:ログ日付logdate + ログ時間logtime set logdate= set logtime= set logtoday= set logdate=%date% set logtime=%time:~0,5% set logtoday=%logdate%_%logtime% rem ログ出力処理 echo %logtoday% >> ..\..\..\..\..\バックアップ\アストスタジオ\ログファイル\clipDataBkLog.txt rem データBackUp処理 copy ..\..\..\..\..\..\..\..\kai\AppData\Roaming\AsutoUserData\Asuto\AsutoData\DocumentBackup ..\..\..\..\..\バックアップ\アストスタジオ

エラーが表示されないソースコード

@echo off chcp 65001 cd /d %~dp0 rem ログに出力する日時情報 rem 変数概要: ①logdate:ログ日付 ②logtime:ログ時間 ③logtoday:ログ日付logdate + ログ時間logtime set logdate= set logtime= set logtoday= set logdate=%date% set logtime=%time:~0,5% set logtoday=%logdate%_%logtime% rem ログ出力処理 echo %logtoday% >> ..\..\..\..\..\バックアップ\アストスタジオ\ログファイル\clipDataBkLog.txt rem データBackUp処理 copy ..\..\..\..\..\..\..\..\kai\AppData\Roaming\AsutoUserData\Asuto\AsutoData\DocumentBackup ..\..\..\..\..\バックアップ\アストスタジオ

エラーが表示されないソースコード2

@echo off chcp 65001 cd /d %~dp0 rem ログに出力する日時情報 rem 変数概要: ①logdate:ログ日付 ②logtime:ログ時間 ③logtoday:ログ日付logdate + ログ時間logtime set logdate= set logtime= set logtoday= set logdate=%date% set logtime=%time:~0,5% set logtoday=%logdate%_%logtime% rem ログに出力する日時情報 echo %logtoday% >> ..\..\..\..\..\バックアップ\アストスタジオ\ログファイル\clipDataBkLog.txt rem ログに出力する日時情報 copy ..\..\..\..\..\..\..\..\kai\AppData\Roaming\AsutoUserData\Asuto\AsutoData\DocumentBackup ..\..\..\..\..\バックアップ\アストスタジオ

エラーソースコード

@echo off chcp 65001 cd /d %~dp0 rem ログに出力する日時情報 rem 変数概要: ①logdate:ログ日付 ②logtime:ログ時間 ③logtoday:ログ日付logdate + ログ時間logtime set logdate= set logtime= set logtoday= set logdate=%date% set logtime=%time:~0,5% set logtoday=%logdate%_%logtime% rem ログに出力 echo %logtoday% >> ..\..\..\..\..\バックアップ\アストスタジオ\ログファイル\clipDataBkLog.txt rem ログに出力 copy ..\..\..\..\..\..\..\..\kai\AppData\Roaming\AsutoUserData\Asuto\AsutoData\DocumentBackup ..\..\..\..\..\バックアップ\アストスタジオ

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

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

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

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

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

bsdfan

2023/02/11 13:04

remのあとに1行あけたものと、あけていないバッチファイルを、違うディレクトリに置いて実行してたりしないですか?
asukaraisu

2023/02/11 13:29

ご返信いただきありがとうございます。 バッチファイルは同じディレクトリ上で実行しました。
asukaraisu

2023/02/11 13:56

追記した「エラーが表示されないソースコード2」のようにコメントを「ログに出力する日時情報」に変更すると改行を消してもなぜか正常に実行されます。 またそのコードのコメントをBackSpaceで消して「エラーソースコード」のように「ログに出力」というコメントに変更するとエラーになります。
guest

回答1

0

ベストアンサー

他の方の質問にも同様のことを書きましたが、
CMD.EXEには、UTF-8で日本語を書くと、場合によって次の行の先頭から何バイトか欠けてしまうと言うバグがあります。
@echo offを削除すると、欠けている状況が見えます。
(これに限らず、「なんか変」な時は、echo offを止めると良いです)

どうしても日本語をUTF-8で書くのなら、次の行を空行にするか、エラーにならなくなるまで次の行の行頭に空白を入れるか、どちらかの回避策しかないです。

・日本語を書いても次の行頭が欠けないケースと、欠けるケースが生じる条件については未確認。
・日本語以外の非ASCII文字を書いた場合にどうなるかも未確認。

投稿2023/02/11 15:48

otn

総合スコア84702

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

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

asukaraisu

2023/02/11 16:57

ご回答ありがとうございます。 コメント内容を変更するたびに、Pathの欠ける箇所が変わっていることを確認することができました。 ご指摘の通りUTF-8で日本語を記述したことによるエラーだったことが分かりました。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問