我在处理循环批处理文件中的变量时遇到了一些困难。当我认为我把它搞砸时,我发现了一个例子,它不能像我预期的那样工作,我觉得我一直在绕圈子......
我已经编写了全部代码,以防它有所作为,基本上我有一个包含许多子文件夹的存档文件夹,我想检查我的上传数据(将在脚本末尾移动到存档文件夹)当我让这部分工作时写)已经被处理了。如果是这样,请移至带有日期的 Duplicates 文件夹:
@echo off
for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if '.%%i.'=='.LocalDateTime.' set localDT=%%j
set localYYYY=%localDT:~0,4%
set localMM=%localDT:~4,2%
set localDD=%localDT:~6,2%
set localDate=%localYYYY%-%localMM%-%localDD%
set localTime=%localDT:~8,2%:%localDT:~10,2%
for %%f in ("C:\Test\837Store\*.837") DO if exist /R "C:\Test\Archive\%%~nxf" (
set VariableTemp=%%~nxf
echo %VariableTemp%
IF NOT EXIST "C:\Test\Archive\Duplicates" mkdir "C:\Test\Archive\Duplicates"
IF NOT EXIST "C:\Test\Archive\Duplicates\%localYYYY%" mkdir "C:\Test\Archive\Duplicates\%localYYYY%"
IF NOT EXIST "C:\Test\Archive\Duplicates\%localYYYY%\%localMM%" mkdir "C:\Test\Archive\Duplicates\%localYYYY%\%localMM%"
copy "%%~nxf" "C:\Test\Archive\Duplicates\%localYYYY%\%localMM%"
echo %localDate% %localTime% Duplicate claims file: %%~dpnxf File moved to archive >> "C:\Test\Log\Error.log"
)
pause
我的问题是,变量 %%f 似乎没有通过循环设置。mkdir 命令已运行,但是当我们到达副本时出现“找不到文件”错误。为了尝试查看发生了什么,我包含了 VariableTemp 并根据代码进行设置,希望看到文件的名称和扩展名。相反,我的回声正在打印“%~nxf”
谁能帮我理解这些变量是如何工作的?为什么我看不到 837Store 中的文件名?
只是为了获得更多信息,我在 C:\Test\837Store 中有以下 2 个文件:
1.837 2.837
我在 C:\Test\Archive\2013\08 中有相同的 2 个文件,因此希望它们从 837Store 移动到相关的 Duplicates 文件夹。
谢谢。