Powershell脚本将文件复制到新文件夹

时间:2016-05-09 01:38:30

标签: powershell scripting

我对Powershell脚本编写起来相当新,我必须编写一个脚本,从某个路径复制文件并将其粘贴到使用当前日期创建的新文件夹中。这是我到目前为止所得到的。

((Get-Date).ToString('yyyy-MM-dd'))

当我运行此脚本时,它会创建一个名为dxg:GridControl的目录,而不是今天的日期。

当此脚本运行时,它必须创建一个包含当前日期的目录并将该文件粘贴到其中。因此,如果我每天运行一次5天,它应该创建5个不同的文件夹,每个文件夹中包含该文件。非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

如果您希望保留这两行代码,则需要将Get-Date部分包含在$()中。这告诉PS在使用双引号内的字符串之前解析该代码。 enter image description here

所以你的代码看起来像这样:

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'