batch-file - 自动替换文件
问题描述
我的任务是重命名一个文件并将另一个同名文件放在同一个文件夹中
例如一个文件夹C:/test
,我有多个文件.txt
(假设test.txt
是需要重命名和替换的文件)
我想重命名并test.txt
在test_bkp%date%
那里放置新文件。
需要帮助来启动逻辑。
@ECHO OFF
SET "sourcedir=C:\Users\test\new"
FOR /f "delims=" %%a IN (
'dir /b /a-d "%C:\Users\Test\new\%filenames%.txt" '
) DO (
SET "filename=%%a"
ECHO REN "%C:\Users\Test\new\%%a C:\Users\Test\new\%%a_bk_date.*%"
)
GOTO :EOF
让我解释一下我想要实现的目标。我经常得到包含更新数据的文件。我不能直接用新文件替换旧文件。我必须进行备份并将新文件放在文件夹中。这是我第一次尝试使用批处理脚本
解决方案
一旦您将文件的新版本写入与原始文件(具有相同名称)相同的文件夹中,重命名原始文件已经太晚了 - 它不再存在。您需要两个文件夹:一个用于接收新版本 ( new
),另一个用于保存重命名文件和新文件 ( old
)
@ECHO OFF
setlocal
set "source=C:\Users\test\new"
set "destin=C:\Users\test\old"
set "files=*.txt"
REM for every matching file in the source folder:
for %%A in ("%source%\%files%") do (
REM if there is such a file in the destination folder, rename it:
if exist "%destin%\%%~nxA" ren "%destin%\%%~nxA" "%%~nA-%date%%%~xA"
REM only then copy the file:
copy "%%~fA" "%destin%\"
)
如果您每天运行一次以上,这将失败。(需要更多代码来处理它;例如,time
也添加)如果您包含文件名中不允许的字符(我看起来像)
,它也会失败。(需要更多代码来处理它;例如)%date%
%date%
29.01.2019
%date:/=-%
推荐阅读
- javascript - 使用材质 ui 在开关内添加文本
- aws-glue - 使用 aws glue python shell 连接到 Oracle RDS 数据库
- php - 每个页面和页面的每个输入字段的基于动态角色的访问控制
- python-2.7 - 创建永久(固定)conda 环境
- r - 在数据框中的多列中仅保留负值
- javascript - 为什么 for (...in...) 循环在遍历对象方法时不返回键
- javascript - 向 Netlify 提供服务命令
- python - 如何读取 OneDrive 的所有文件并用 Python 进行复制
- javascript - 使用 express 将 PDF 上传到 mongoDB
- java - 在JAVA中获取日期和今天之间的月数