teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

追記

2018/06/20 02:24

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -125,6 +125,7 @@
125
125
  ```
126
126
 
127
127
  ---
128
+ **11:24 追記↓**
128
129
  試行錯誤して下記の様に変更したら、1ファイルずつコピーできるようになりましたが、
129
130
  logファイルがうまく生成されません。
130
131
  logファイルは、log-YYYYMMDDSS.logという形式で出力させたいのですが、なぜか、

2

追記

2018/06/20 02:24

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -123,4 +123,51 @@
123
123
  )
124
124
  pause
125
125
  ```
126
+
127
+ ---
128
+ 試行錯誤して下記の様に変更したら、1ファイルずつコピーできるようになりましたが、
129
+ logファイルがうまく生成されません。
130
+ logファイルは、log-YYYYMMDDSS.logという形式で出力させたいのですが、なぜか、
131
+ log-.logというファイルが1ファイルしか出来上がりません。
132
+
133
+
134
+ ```bat
135
+ @echo off
136
+
137
+ set LogPath=C:\work\01_学習資料\01_Windows\bat\tmp\
138
+ set SrcPath=C:\work\01_学習資料\01_Windows\bat\tmp\
139
+ set DstPath=C:\work\01_学習資料\01_Windows\bat\tmp1\
140
+
141
+ cd %SrcPath%
142
+
143
+
144
+ for %%i in (*.dat) do (
145
+ rem echo %%i
146
+
147
+ set S_time_tmp=%time: =0%
148
+ set hh=%S_time_tmp:~0,2%
149
+ set mi=%S_time_tmp:~3,2%
150
+ set ss=%S_time_tmp:~6,2%
151
+ set S_datetime=%hh%%mi%%ss%
152
+
153
+ rem logファイル生成
154
+ echo PC→XXServer > %LogPath%log-%S_datetime%.log
155
+ echo CopyFileName: %%i >> %LogPath%log-%S_datetime%.log
156
+ echo 開始時刻:%S_datetime% >> %LogPath%log-%S_datetime%.log
157
+
158
+ copy %%i %DstPath%
159
+
160
+ set E_time_tmp=%time: =0%
161
+ set hh=%E_time_tmp:~0,2%
162
+ set mi=%E_time_tmp:~3,2%
163
+ set ss=%E_time_tmp:~6,2%
164
+ set E_datetime=%hh%%mi%%ss%
165
+
166
+ echo 終了時刻:%E_datetime% >> %LogPath%log-%S_datetime%.log
167
+
168
+ timeout /T 2 > null
169
+ )
170
+
171
+ pause
172
+ ```
126
173
  アドバイスの程、よろしくお願い致します。

1

追記

2018/06/20 02:23

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -88,4 +88,39 @@
88
88
  上記コードでは、100ファイルあったっら非常に非効率になってしまうことは重々承知です。
89
89
  ループを使ってなんとしたいのですが・・・・
90
90
 
91
+ 一応、一つ一つ分解し簡略化した動作を確認しています。
92
+ まずは、コピー元フォルダ内のファイルが取得できるか確認。↓
93
+ ```バッチ
94
+ @echo off
95
+
96
+ cd C:\work\01_学習資料\01_Windows\bat\tmp
97
+
98
+ for %%i in (*.dat) do (
99
+ echo %%i
100
+ )
101
+ ```
102
+
103
+ そして、以下のようにループで取得したファイル名をパスに連結すると
104
+ エラーとなってしまいます。%%1には、ファイル名が入っているので、
105
+ ```
106
+ copy %SrcPath%%%i % DstPath%
107
+ ```
108
+ としても大丈夫なような気もするのですが・・・・
109
+
110
+ ```バッチ
111
+ @echo off
112
+
113
+ set LogPath=C:\work\01_学習資料\01_Windows\bat\tmp\
114
+ set SrcPath=C:\work\01_学習資料\01_Windows\bat\tmp\
115
+ set DstPath=C:\work\01_学習資料\01_Windows\bat\tmp1\
116
+
117
+ cd %SrcPath%
118
+
119
+
120
+ for %%i in (*.dat) do (
121
+ rem echo %%i
122
+ copy %SrcPath%%%i % DstPath% 
123
+ )
124
+ pause
125
+ ```
91
126
  アドバイスの程、よろしくお願い致します。