我目前正在运行一个脚本,该脚本在删除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目录中创建的最新内容之类的内容?
答案 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)
您不需要使用那些ChDir
(CD
)语句(如上所述)和MkDir
(MD
)可以创建多个级别的子目录,因此这样写是很实际的:
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\" )