我想添加带文件的子文件夹进行存档。
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST);
我无法使用它,因为我不需要我文件夹中的所有文件。 我有一些数据包含有关文件的信息:
$paths = [
[
'name' => 'file',
'ext' => 'txt',
'path' => '/folder/'
],
[
'name' => 'subFolder',
'ext' => 'folder',
'path' => '/folder/'
],
[
'name' => 'fileInSubFolder',
'ext' => 'txt',
'path' => '/folder/subFolder/'
]
];
在循环中我这样做:
if( $folder[$i]['ext'] == 'folder' )
$zip->addEmptyDir($fileName);
else
$zip->addFromString( $fileName.$fileExt, file_get_contents($fileFullPath.$fileExt));
如果"文件夹",那么我在存档中创建空文件夹,否则添加文件到存档。 但是如果文件位于子文件夹中,那么文件将添加到归档的根目录。 而且,如何将文件添加到新的空子文件夹? 或者如何更改添加文件的当前目录?
答案 0 :(得分:0)
你没有"改变目录"使用ZipArchive时,您总是在添加文件时传递绝对文件路径。
现在,我不确定为什么你有一个clear
$instances = (Get-Service | Where-Object {$_.Name -like 'MSSQL$*'}).DisplayName
$machine_name = [System.Net.Dns]::GetHostName()
foreach ($inst in $instances) {
$serv = $machine_name+"\"+$inst.Substring($inst.IndexOf("(")+1).Replace(")","")
$conn=new-object System.Data.SqlClient.SQLConnection
$ConnectionString = "Server="+$serv+";Database=MyDB;Integrated Security=True;Connect Timeout=0"
$conn.ConnectionString=$ConnectionString
$conn.Open()
$commandText = "CREATE PROC Get_Jobs_Inventory_Detail
AS
SELECT j.name AS [Job Name],j.[description], j.date_created, j.date_modified,
case j.[enabled]
WHEN 0 THEN 'Disable'
WHEN 1 THEN 'Enable'
END AS [Job Status]
FROM msdb.dbo.sysjobs j
GROUP BY j.name, j.[description], j.date_created, j.date_modified,j.[enabled]
ORDER BY j.[enabled];"
$command = $conn.CreateCommand()
$command.CommandText = $commandText
#$command.ExecuteNonQuery()
$command.ExecuteScalar()
$conn.Close()
}
数组,但是你循环遍历$paths
因为我看不到你的所有代码,但是如果你循环遍历$folders
1}}数组你想要将你存储的绝对路径附加到文件名的前面。
$paths