【问题标题】:Create a batch file to rename and move files with user input创建批处理文件以使用用户输入重命名和移动文件
【发布时间】:2011-10-17 03:43:12
【问题描述】:

我对 DOS 命令(主要是简单的移动/复制/删除/重命名命令)的了解非常有限,并且在创建执行以下步骤的批处理文件时需要一些帮助:

  1. 提示用户在输入框中输入版本号。

  2. 验证用户的输入以确保输入为主要版本、连字符、次要版本(例如 5-10)

  3. 搜索运行批处理文件的当前文件夹,并通过将版本号和硬编码描述附加到该文件来重命名所有 PDF。

    例如原始文件EMDM.pdf,应重命名为EMDM_5-10_Software Operations Manual.pdf(注意版本号前后的下划线,说明文本中的空格)

  4. 转到 \webserver\downloads 并将该位置中以“EMDM”开头并以“Software Operations Manual.pdf”结尾的 PDF 文件“移动”到 \webserver\downloads\supserseded

  5. 移动(备份)之前版本的 PDF 后,将与 bacth 文件位于同一文件夹中的新重命名的 PDF 复制到 \webserver\downloads

  6. 移动成功后,删除与bacth文件位于同一文件夹中的PDF文件。

谢谢你。

【问题讨论】:

  • 你能说出你已经拥有什么吗?
  • 这是我目前拥有的:Step 1 set /P VersionNumber="Enter the Version Number" Step 2 不知道如何这样做? 步骤 3 重命名 .pdf "%VersionNumber%_Software Operations Manual.pdf" _这不能正常工作,因为它重命名了我的文件从 EMDF.pdf 到 EMDM.pdf_VersionNumber_Software Operations Manual.pdf Step 3 MOVE \\webserver\downloads\EMDM*.PDF \\webserver\downloads\Superseded Step 5 复制 *.PDF \\webserver\downloads 步骤 6 DEL *.PDF
  • 我基本上在重命名文件时遇到了问题,方法是向文件附加版本和描述(它将文件扩展名放入其中两次),并验证版本号的格式是否正确。

标签: command-line batch-file command-line-arguments


【解决方案1】:
@echo off
:getversion
REM 1.
set /p VersionNumber=Enter the Version Number: 
REM 2.
for /f "tokens=1-3 delims=-" %%a in ("%VersionNumber%") do set Major=%%a& set Minor=%%b
REM 2.1 Revision of Version Number format
if not "%Major%-%Minor%" == "%VersionNumber%" goto getversion
REM 2.2 Revision of Major and Minor be numbers
set /a NMajor=Major, NMinor=Minor > NUL
if not "%NMajor%" == "%Major%" goto getversion
if not "%NMinor%" == "%Minor%" goto getversion
REM 3.
for %%a in (*.PDF) do ren "%%a" "%%~Na_%VersionNumber%_Software Operations Manual.pdf"
REM 4.
pushd \webserver\downloads
move "EMDM*Software Operations Manual.pdf" supserseded
REM 5.
popd
copy "EMDM*Software Operations Manual.pdf" \webserver\downloads
REM 6.
del "EMDM*Software Operations Manual.pdf"
REM Steps 5 and 6 above is the same as just one MOVE

我通过更简单的方法修改了版本号的修订。

【讨论】:

  • Aacini,非常感谢您,这非常有效。步骤 5 中是否有任何方法可以使用 VersionNumber 输入的前 2 个字符并将其附加到要移动的文件中?比如版本号是5-14,只移动“EMDM_5-*Software Operations Manual.pdf”?
  • 好吧,如果你的意思是“主要数字”而不是“版本号的前 2 个字符”:移动“EMDM_%Major%-*Software Operations Manual.pdf”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-01
  • 1970-01-01
  • 2013-06-27
  • 1970-01-01
  • 2019-05-25
  • 1970-01-01
相关资源
最近更新 更多