我正在使用此代码:
$DataSourceName = "..\Log4OM\Log4OM-Active.SQLite";
if(!file_exists($DataSourceName))
{
$Msg = sprintf("%s does not exist", $DataSourceName);
die($Msg);
}
该文件确实存在,此路径一直工作到今天早上。现在测试失败,应用程序死了。 “is_file”不会更好。
我也使用这段代码:
$connection = new PDO("sqlite:".$DataSourceName);
// Set errormode to exceptions
$connection->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
这实际上打开了文件并且应用程序正常运行。我知道这是因为我击败了第一个尝试它的测试。不幸的是,在我到达“$ connection =”行之前,第一次测试必须通过。
我也试过fopen,无法打开文件。文件名实际上是真实文件的硬链接,但替换真实文件名也有同样的问题。文件权限看起来是正确的,与几天前一样。
答案 0 :(得分:5)
不要依赖目录"行走"。始终指定您从哪里开始的根(例如)foreach($file in Get-ChildItem C:\users\xx\Desktop\mappcent3 |Where {-not $_.PsIsContainer})
{
$FirstKeyword = 'FirstKeyword'
$FirstLine = Select-String -Path $file.FullName -Pattern $FirstKeyword -Context 0,1 |Select -Expand Context -First 1 |Select -Expand PostContext
$SecondKeyword = 'SecondKeyword'
$SecondLine = Select-String -Path $file.FullName -Pattern $SecondKeyword -Context 0,1 |Select -Expand Context -First 1 |Select -Expand PostContext
New-Object psobject -Property @{$FirstKeyword=$FirstLine;$SecondKeyword=$SecondLine} |Export-Csv (Join-Path $file.DirectoryName ($file.BaseName + '_keywords.txt'))
}
__DIR__