cd进入带有随机名称的新创建的文件夹

时间:2019-08-30 08:06:15

标签: windows batch-file

我目前正在运行一个脚本,该脚本在删除Outlook配置文件之前会导出注册表项。

我的脚本当前可以实现此目的-但是,我正在尝试在用户配置文件下创建一个名为Outlook_Backup的文件夹,该文件夹已过时并带有时间戳。

尽管每次运行脚本时都有不同的文件夹名称,有什么方法可以创建Outlook_Backup目录,然后将其CD到此位置的Outlook_Backup-dd-mm-yy文件夹中?

通常您可以使用CD切换到Outlook_Backup,但是每个文件夹都会更改,例如Outlook_Backup-29-01-2019-26-08-91和Outlook_Backup-29-01-2019-26-15-65

cd %userprofile% & mkdir Outlook_Backup & cd Outlook_Backup & mkdir Outlook_Backup-%date:~-10,2%"-"%date:~7,2%"-"%date:~-4,4%"-"%time:~3,2%"-"%time:~6,2%"-"%time:~9,2% 

提供的代码有效,但是是否可以添加诸如cd Latest.Outlook_Backup或在Outlook_Backup目录中创建的最新内容之类的内容?

1 个答案:

答案 0 :(得分:0)

我完全明白了您的想法。

有时候,您只需要将一行或几行粘贴到CMD提示CLI实例中并完成操作(并且可能只是想,正如我所说的那样,我自己对CMD CLI的使用是“懒惰”而不是创建)永久变量,或将其全部保存在一行中,以便轻松地将其粘贴到cmd或出于任何原因)

所以您有一些选择:

A:将cmd分成几行,将日期保存在变量中并在整个过程中使用。

B:将所有内容包装在一个循环中(这也意味着它仍然可以写成跨越多行,而无需在输入时使它们单独运行)

C:在末尾使用循环查找每次写入的文件夹的名称。

所有方法都是完全有效的方法。

在尝试使内容保持单行时,我通常更喜欢选项B,因为循环使我可以stipl粘贴多行,但是在测试时得到more?以防万一我在复制粘贴中遗漏了某些东西,并且它很容易展开/折叠(IMO)

我正在用手机写这篇文章,而我的孩子们才刚刚起床。要滚动。

如果我能够但又没有时间写这3个全部内容,我将很快地将选项B粘贴。

哦,另一件事,请尽可能避免CD进入位置。是的,但是经常编写一个生成完整路径的cmd效率更高,并且不太可能引起问题。

无论如何:

For %%A IN ("%date:~-10,2%"-"%date:~7,2%"-"%date:~-4,4%"-"%time:~3,2%"-"%time:~6,2%"-"%time:~9,2%") DO ( cd %userprofile% & mkdir Outlook_Backup & cd Outlook_Backup & mkdir Outlook_Backup-%%~A & CD  Outlook_Backup-%%~A
)

以上内容可以跨多行运行:

For %%A IN (
  "%date:~-10,2%"-"%date:~7,2%"-"%date:~-4,4%"-"%time:~3,2%"-"%time:~6,2%"-"%time:~9,2%"
) DO (
  cd %userprofile%
  mkdir Outlook_Backup
  cd Outlook_Backup
  mkdir Outlook_Backup-%%~A
  CD  Outlook_Backup-%%~A)

您不需要使用那些ChDirCD)语句(如上所述)和MkDirMD)可以创建多个级别的子目录,因此这样写是很实际的:

For %%A IN (
  "%date:~-10,2%"-"%date:~7,2%"-"%date:~-4,4%"-"%time:~3,2%"-"%time:~6,2%"-"%time:~9,2%"
) DO (
  MD "%userprofile%\Outlook_Backup\Outlook_Backup-%%~A\"
  CD  /D "%userprofile%\Outlook_Backup\Outlook_Backup-%%~A\" )

或作为一行:'

For %%A IN ( "%date:~-10,2%"-"%date:~7,2%"-"%date:~-4,4%"-"%time:~3,2%"-"%time:~6,2%"-"%time:~9,2%") DO ( MD "%userprofile%\Outlook_Backup\Outlook_Backup-%%~A\" & CD  /D "%userprofile%\Outlook_Backup\Outlook_Backup-%%~A\" )