Batch file 如何在forfiles中包含空格

Batch file 如何在forfiles中包含空格,batch-file,Batch File,我想将日志文件从多个位置移动到另一个文件夹,当前日期位于同一位置,并且源路径取自文本文件。源路径包含发生错误的空间 以下是脚本: 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 %lo

我想将日志文件从多个位置移动到另一个文件夹,当前日期位于同一位置,并且源路径取自文本文件。源路径包含发生错误的空间

以下是脚本:

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
我得到的错误是:


按任意键继续


需要帮助。。请尝试使用短路径(文件的短路径不包含空格):


Forfiles使用双引号的
0x22

(十六进制22是Ascii 34,是双引号字符)

因此,这将引用以下条款:

编辑:echo添加在下面-请参阅forfiles命令中此段的回声

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

还请注意,您的日志文件在move命令中的“kenya”后面显示了一个添加的空格,但它不是两个词,也不是粘贴的代码。

我还可以知道~dpsfn的作用吗?它返回短路径\文件名。不幸的是,它有一个经常出现的错误,并且不是100%可靠。现在,我能够将文件移动到目标,但我得到了如下所述的错误:D:\kycintg\KenyaSpecificServices\UNIDOC~1\LOGFIL~1>forfiles/p D:\kycintg\KenyaSpecificServices\UNIDOC~1\LOGFIL~1\/m.log/D-2/c“cmd/c移动D:\kycintg\KenyaSpecificServices\UNIDOC~1\LOGFIL~1*。D:\kycintg\KenyaSpecificServices\UNIDOC~1\LOGFIL~1\20131102“D:\kycintg\KenyaSpecificServices\UNIDOC~1\LOGFIL~1\KYCEMAUnbarring\u 3.log D:\kycintg\KenyaSpecificServices\UNIDOC~1\LOGFIL~1\UNIDOC\u OFFLINEDBLOG.log 2文件已移动。文件名、目录名或卷标语法不正确。如果源位置中有多个文件,则我会收到此错误。.文件名、目录名或卷标语法不正确。请检查您发布的日志文件
\Unidoc\u DML\u Executor\u Kenya\log files\*.
查看空格?检查上面的编辑
for /f "tokens=*" %%i in (C:\Users\kyckeams\Desktop\Batch\source.txt) do (
set "location=%%~dpsfni"
call :Move
)
echo %location%
"cmd /c echo move 0x22%location%*.*0x22 0x22%location%%curr_date%0x22"