我对Powershell脚本编写起来相当新,我必须编写一个脚本,从某个路径复制文件并将其粘贴到使用当前日期创建的新文件夹中。这是我到目前为止所得到的。
((Get-Date).ToString('yyyy-MM-dd'))
当我运行此脚本时,它会创建一个名为dxg:GridControl
的目录,而不是今天的日期。
当此脚本运行时,它必须创建一个包含当前日期的目录并将该文件粘贴到其中。因此,如果我每天运行一次5天,它应该创建5个不同的文件夹,每个文件夹中包含该文件。非常感谢任何帮助。
答案 0 :(得分:1)
如果您希望保留这两行代码,则需要将Get-Date
部分包含在$()
中。这告诉PS在使用双引号内的字符串之前解析该代码。
所以你的代码看起来像这样:
New-Item -Path "c:\users\random\desktop\$((Get-Date).ToString('yyyy-MM-dd'))" -ItemType Directory
copy-item c:\users\random\desktop\rand.txt "c:\users\random\desktop\$((Get-Date).ToString('yyyy-MM-dd'))"
但是,如果您的脚本在午夜的微秒内执行,则可能会有一个缺陷:每个命令都会有一个单独的日期。
更好的方法是简单地获取变量中的日期并在两个命令中使用它。它还会使它更具可读性:
$cDate = Get-Date -format yyyy-MM-dd
$NewPath = "C:\Users\random\desktop\$cDate"
New-Item -Path $NewPath -ItemType Directory
Copy-Item c:\users\random\desktop\rand.txt $NewPath
如果碰巧在午夜运行时,这将确保您获得相同的日期值。虽然这可能不会成为一个问题,但安全并没有坏处。
答案 1 :(得分:0)
你在括号前错过了一个美元符号
“c:\ users \ random \ desktop ** $ **((Get-Date).ToString('yyyy-MM-dd'))”
答案 2 :(得分:0)
创建一个变量来存储GetDate,然后将其转换为字符串。
$currentdate = date
$currentdate2 = $currentdate.ToString("yyyy-MM-dd")
因此,您的代码文件夹路径为&c; \ users \ random \ desktop \ $ currentdate2'