- 締切済み
コマンドプロンプトのバッチで、startコマンドの後にxcopyを走らせて、コピーした内容のログを取りたいのです
現在コマンドとしては以下のようなバッチを組んでいます。 for /f "tokens=1,2" %%A in (file.txt) do start "" xcopy \\192.168.10.10\TEST %%B\TEST /D /S /E /Y /R >> test.log ※file.txtの中身は以下の通りです。 札幌 \\192.168.200.22 新宿 \\192.168.121.22 ・ ・ ・ ・ ・ ファイルリストの中のデータ(IP)を取得して、コピーを開始する。 ・・・までは良いのですが、xcopyの中身のログが取れません。 出力されても空白です。 「startしたらtest.logというファイルを作るだけだよ。」 とPCに言われていると思うと凄く納得しちゃいます。 解決策としてはxcopy以下をバッチファイルにすれば良いのですが、 何せfile.listの中身は90件近くもあるので、1個ずつバッチファイルを作っていくのは凄く大変です。 どなたかお力を貸して頂けないでしょうか。 出来れば他のプログラム(wsh、vb等)は使いたくないです。 てんでど素人なので。。。 宜しく御願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- shokker02
- ベストアンサー率45% (204/446)
>解決策としてはxcopy以下をバッチファイルにすれば良いのですが、 なら、「そのバッチファイルを、最初のバッチで作る」手もあります。 行数が多くて手作業で作るのは大変でも「自動化」すれば容易。 コマンドの構造もあまり複雑にならないので確認もしやすいというメリットも。 「1行のコマンドで全作業をやらせる必要がある」ならまた工夫が要りますが、 逆に、2ステップを手作業で行うくらいは大した手間でもないです。
- notnot
- ベストアンサー率47% (4900/10358)
>出力されても空白です。 start コマンドの出力がリダイレクトされるからですね。 スクリプトがstartコマンドを実行する際に解釈されず、startコマンドがxopyを実行する際にリダイレクトが解釈されるようにします。 具体的には > を ^ で一度エスケープします。 for /f "tokens=1,2" %%A in (file.txt) do start "" xcopy \\192.168.10.10\TEST %%B\TEST /D /S /E /Y /R ^>^> test.log
お礼
お返事有難う御座います。 教えて頂いたやり方でやってみたのですが、やはり駄目でした。 具体的にはログファイルも吐かれず、xcopyも走りませんでした。 ちなみに「^>^> test.log」部分のままだとファイル名が被るらしく、エラーになったので、^>^> 「%%A.log」としました。 しかし元のバッチファイルの起動後の画面には、 C:\test.bat>start "" xcopy \\192.168.10.10\TEST \\192.168.200.22\TEST /D /S /E /Y /R >> 札幌.log C:\test.bat>start "" xcopy \\192.168.10.10\TEST \\192.168.200.22\TEST /D /S /E /Y /R >> 新宿.log とあり、正しいとは思うのですが。。。 もう少し、ねばってみます。
お礼
お返事有難う御座います。 バッチでバッチファイルを作るとは正直、目からうろこでした。 その方が手っ取り早そうですね。 ただもう少しで1つのコマンドで解決出来そうな気がするので、 解決出来なそうであれば、参考にさせて頂こうかと思います。