【问题标题】:Batch script that do a backup执行备份的批处理脚本
【发布时间】:2015-12-08 00:02:32
【问题描述】:

我是批处理脚本的初学者,我尝试做一个脚本来询问文件路径,然后创建一个文件夹(在当前文件夹中),我希望创建的文件夹名称类似于“sav-DATE-TIME “(例如,现在文件夹将被命名为:sav-2015-12-07-18-55-00)然后将用户文件路径给出的文件复制到创建的文件夹中。到目前为止我这样做了:

@ECHO OFF
SET /P pathh=Enter the path
SET foldname=sav%DATE%%TIME%
mkdir %foldname%
cd %foldname%
xcopy /s/e %pathh% %cd%
pause

但是当我运行这个时,无论我如何输入路径“或'或路径周围没有任何内容,它总是说路径不正确,并且它还创建了一个随机数的文件夹(74,56,21 ...)作为文件夹名称,我不明白为什么它不能正常工作,这意味着创建具有问题开头所说的名称的文件夹,并且还说路径总是不正确。

谢谢!

【问题讨论】:

    标签: batch-file windows-7 path


    【解决方案1】:

    扩展(使用)变量时需要使用引号。下面的第一组引号只是为了确保您没有任何尾随空格字符。试试这个:

    @ECHO OFF
    SET /P pathh=Enter the path
    SET "foldname=sav-%DATE%-%TIME:~0,8%
    SET "foldname=%foldname::=-%
    echo foldname=%foldname%
    rem mkdir "%foldname%"
    rem cd "%foldname%"
    rem xcopy /s/e "%pathh%" "%cd%"
    pause
    

    rem 看起来不错时删除它

    【讨论】:

    • 我刚试过,这仍然不起作用。我认为 SET "foldname=sav%DATE%%TIME%" (就像你说的)应该是 SET foldname="sav%DATE%%TIME %"。但它仍然说路径语法无效,即使文件路径确实存在
    • 我的错。您不能使用 %DATE% 或 %TIME%,因为它们包含字符 / 和 :。需要去掉那些。你真正想要什么格式?你需要秒等吗?您需要关注国际化吗? (日期/时间格式可能按国家/地区)。请为您的机器发布 ECHO,%DATE%%TIME% 的结果,以及您希望看到的 foldname 格式。在寻找此类问题时,您应该删除@ECHO OFF 语句,然后您将看到问题。
    • 我刚刚做了 ECHO,%DATE%%TIME%,我得到了 2015-12-0721:30:00,98。我不需要国际化,只想文件夹名称(foldname)像“sav-2015-12-07-21-30-00”。谢谢
    • 我编辑了我的答案。您的日期/时间格式与我的不同,因此您必须自己测试。见 SET /?解释。上面的第一组将只使用 %TIME% 的前 8 个字符。第二个 SET 将所有 : 替换为 -.
    • 谢谢!!你解决了我的问题。我也有错误,因为我试图复制 .txt 文件,而 /s/e 参数适用于目录;所以脚本返回错误。从 xcopy /s/e 中删除 /s/e "%pathh%" "%cd%" 现在完美运行了!
    【解决方案2】:

    set foldname=%date:~-4%-%date:~3,2%-%date:~0,2%:%time:~0,2%:%time:~3,2%,%time:~6,2% 这应该给你 2015-12-09-10:56,17

    然后mkdir %foldname%

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-26
      相关资源
      最近更新 更多