如何在批处理文件中将新建的日期命名文件夹设为复制目标?
批处理脚本修正方案
你遇到的核心问题是:%%g、%%e、%%f是for循环的局部变量,只能在DO后的代码块内生效,循环外调用这些变量无法获取正确的日期值,导致复制命令找不到目标路径。
下面提供两种可行的修正方案:
方案一:在循环内完成创建与复制操作
直接将文件夹创建和文件复制的逻辑放到for循环的代码块中,确保能正常使用日期变量:
@echo off :: 直接切换到目标目录(/d参数同时切换盘符和路径) cd /d "D:\My Projects\Test" :: 提取日期并执行创建、复制操作 For /f "tokens=1-4 delims=/ " %%d in ("%date%") DO ( MD "NPP file backup %%g%%e%%f" COPY "C:\Users\{Username}\AppData\Roaming\NPP\Shortcuts.xml" "NPP file backup %%g%%e%%f\" ) :END
方案二:先保存日期变量,再后续调用
先把提取到的日期值存为全局变量,再用这个变量拼接目标路径,结构更清晰:
@echo off :: 提取日期并保存为变量 For /f "tokens=1-4 delims=/ " %%d in ("%date%") DO set "backupDate=%%g%%e%%f" :: 定义目标文件夹完整路径 set "targetDir=D:\My Projects\Test\NPP file backup %backupDate%" :: 创建文件夹 MD "%targetDir%" :: 复制文件到目标文件夹(末尾加\确保识别为文件夹) COPY "C:\Users\{Username}\AppData\Roaming\NPP\Shortcuts.xml" "%targetDir%\"
注意事项
- 请将代码中的
{Username}替换为你自己的Windows用户名(比如C:\Users\John\AppData\Roaming\NPP\Shortcuts.xml) - 复制路径末尾的
\可以确保系统将目标识别为文件夹,避免出现“是否覆盖文件”的提示(如果存在同名文件)
内容的提问来源于stack exchange,提问作者M4verick
相关产品推荐
相关产品推荐

