我有一个脚本,在目录中查找* .bak文件,并将文件移动到基于日期重命名目标目录的备份目录。
在1个环境中,一切都按预期工作,另一个则在设置变量时失败并且“无法在空值表达式上调用方法”。完全相同的PS 4.0版本在两种环境中都运行。
#include <iostream>
using namespace std;
int main()
{
//setting values for the items and characters
{
int player;
int healthvalue = 100;
int sword;
int enemy1;
int enemy2;
std::cout << "Hello player! Welcome to the game!\n\t";
}
{
std::cout << "You wake up in confusion, your whereabouts are unknown.\n"
<< std::endl;
std::cout << "A band of goblins approachs you from the distant horizon.\n\t" << std::endl;
std::cout << "Do you draw your sword and stand your ground?\n";
cin >> yes, no;
if (true) {
}
}
}
如果存在.bak文件$SourceDir = "D:\APPS\Logs"
$DestinationDir = "D:\APPS\ServerLog_Archives\"
$files = get-childitem -path $SourceDir -Filter *.bak
$Directory = $DestinationDir + "" + $file.CreationTime.Date.ToString('yyyy') + "\" + $file.CreationTime.Date.ToString('dd-MMM')
则返回以下内容,否则该变量将返回NULL。
Directory: D:\APPS\Logs Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2017-08-25 6:38 PM 100068 jfserver5.bak -a--- 2017-08-25 6:38 PM 100068 jfserver6.bak
在1个环境中$files
返回目标目录,无论$Directory
是否为NULL或返回了什么内容。
D:\APPS\ServerLog_Archives\2017\20-Nov
在其他环境中,我收到错误:
You cannot call a method on a null-valued expression. At line:6 char:1 + $Directory = $DestinationDir + "" + $file.CreationTime.Date.ToString('yyyy') + " ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull
为什么这会在1个环境中运行而不是另一个运行相同版本的PS?也许有更好的方法来做到这一点,任何建议都将受到高度赞赏。