基本上,我已经创建了一个批处理文件,该文件将复制FOLDER A
中的文件,然后使用结尾的日期重命名该文件并将其粘贴到FOLDER C
中。
在进行此操作之前,我正在寻找如何设置FIND函数以搜索FOLDER B
以查看其是否具有相同名称的文件。
如果确实包含与FOLDER A
中文件相同的名称,那么我希望它复制该文件,并在末尾添加日期并将其粘贴到FOLDER C
中。
让我们说:
希望这很有道理。
答案 0 :(得分:0)
cmd具有一个内置的IF EXIST
和类似的IF NOT EXIST
,该文件检查文件是否存在。 (请参见IF /?
或ss64.com)类似的内容可以满足您的描述。
IF NOT EXIST "%TARGET_FILE%" COPY "%SOURCE_FILE%" "%TARGET_FILE%"
cmd具有一些解析路径的方法,但是,所有有用的功能都包含在FOR
命令中(请参见FOR /?
或ss64.com)。
我通常从典型的环境变量开始,例如%SOURCE_FILE%
,将其分配给FOR
,并允许FOR
的替换行为获取父目录,文件名,扩展名等。
假设您需要文件的基本名称(不包含目录)。您可以这样完成:
FOR /F "tokens=*" %%f IN ("%SOURCE_FILE%") DO SET "SOURCE_FILE_BASE=%%~ff"
现在,SOURCE_FILE_BASE
将包含文件的基本名称。 (注意:在脚本中使用FOR
的语法与在交互式shell中使用时,语法都会发生变化。脚本需要使用%%
。)
根据您的描述,假设您有一个保存在SOURCE_FILE
中的文件的路径以及要将文件复制到的目录TARGET_DIR
,则可以通过执行以下操作来完成描述像这样:
FOR /F "tokens=*" %%f IN ("%SOURCE_FILE%") DO SET "SOURCE_FILE_BASE=%%~ff"
SET "TARGET_FILE=%TARGET_DIR%\%SOURCE_FILE_BASE%"
IF NOT EXIST "%TARGET_FILE%" COPY "%SOURCE_FILE%" "%TARGET_FILE%"