2

ログ ファイルを複数の場所から、現在の日付が同じ場所にある別のフォルダーに移動したいのですが、ソース パスはテキスト ファイルから取得されます。また、ソース パスにスペースが含まれているため、エラーが発生します。

以下はスクリプトです:

ECHO ON
set curr_date=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%
for /f "tokens=*" %%i in (C:\Users\kyckeams\Desktop\Batch\source.txt) do (
set "location=%%i"
call :Move
)
goto:EOF
:Move
cd %location%
cd /D %location%
mkdir %curr_date%
forfiles /p %location% /m *.log /d -2 /c "cmd /c move %location%*.* %location%%curr_date%"
PAUSE

そして、取得するエラーは次のとおりです。


C:\Users\kyckeams\Desktop\Batch>ECHO ON

C:\Users\kyckeams\Desktop\Batch>set curr_date=20131102

C:\Users\kyckeams\Desktop\Batch>for /F "tokens=*" %i in (C:\Users\kyckeams\Desktop\Batch\source.txt) do (set "location=%i" call :Move)

C:\Users\kyckeams\Desktop\Batch>(set "location=D:\kycintg\KenyaSpecificServices\Unidoc_DML_Executor_Kenya\Log Files\" call :Move )

C:\Users\kyckeams\Desktop\Batch>cd D:\kycintg\KenyaSpecificServices\Unidoc_DML_Executor_Kenya\Log Files\

C:\Users\kyckeams\Desktop\Batch>cd /D D:\kycintg\KenyaSpecificServices\Unidoc_DML_Executor_Kenya\Log Files\

D:\kycintg\KenyaSpecificServices\Unidoc_DML_Executor_Kenya\Log Files>mkdir 20131102

D:\kycintg\KenyaSpecificServices\Unidoc_DML_Executor_Kenya\Log Files>forfiles /p D:\kycintg\KenyaSpecificServices\Unidoc_DML_Executor_Kenya\Log Files\ /m *.log /d -2 /c "cmd /c move D:\kycintg\KenyaSpecificServices\Unidoc_DML_Executor_Kenya \Log Files\*.* D:\kycintg\KenyaSpecificServices\Unidoc_DML_Executor_Kenya\Log Files\20131102"
ERROR: Invalid argument/option - 'Files\'. Type "FORFILES /?" for usage.

何かキーを押すと続行します 。. .


助けが必要です..お願いします...

4

2 に答える 2

1

Forfiles は0x22、二重引用符の場所を使用します
(16 進数の 22 は Ascii 34 であり、二重引用符文字です)

したがって、これは用語を引用します:

編集:エコーが下に追加されます - forfiles コマンドでこのセグメントがエコーする内容を確認してください。

"cmd /c echo move 0x22%location%*.*0x22 0x22%location%%curr_date%0x22"

また、ログ ファイルには move コマンドの「kenya」の後にスペースが追加されていることが示されていますが、これは両方の用語ではなく、貼り付けたコードにも含まれていません。

于 2013-11-02T13:02:46.543 に答える