Отредактировано:
Первоначально у меня возник вопрос, почему первый фрагмент кода не работает.действие unzip работало, если я запускаю его самостоятельно для одного файла вне цикла.но как только я обернул его циклом, он не будет работать, и красной ошибки тоже не было.
Thansk @nemze, его / ее ответ вдохновил меня на изменение кода:1009 *
$7ZipPath = "C:\7z\7za"
$zipFolderRoot = "Z:\long folder path\Test Folder\Unzip Test"
$zipOutPath = "Z:\long folder path\Test Folder\Unzip Test\Unzip"
$zipFilePassword = "TEST123"
ls -Path $zipFolderRoot -directory -Exclude Unzip
Foreach ($zipFolderChild in (ls -Path $zipFolderRoot -directory -Exclude Unzip))
{
$zipFile = '"$zipFolderChild"+"\"+"Data.zip"'
$command = "& $7ZipPath x -o'$zipOutPath' -y -p$zipFilePassword $zipFile"
iex $command
#file rename command that I have not written yet
}
Кому:
$7ZipPath = "C:\7z\7za"
$zipFolderRoot = "Z:\long folder path\Test Folder\Unzip Test"
$zipOutPath = "Z:\long folder path\Test Folder\Unzip Test\Unzip"
$zipFilePassword = "TEST123"
ls -Path $zipFolderRoot -directory -Exclude Unzip
Foreach ($zipFolderChild in (ls -Path $zipFolderRoot -directory -Exclude Unzip))
{
$zipFile = "$zipFolderChild"+"\"+"Data.zip"
$command = "& $7ZipPath x -o'$zipOutPath' -y -p$zipFilePassword ""$zipFile"""
iex $command
#file rename command that I have not written yet
}
Перемещая определение $zipFile
за пределы цикла ForEach
, это работает!
Я думаю, что мое второе препятствие теперь движетсячтобы мои файлы были переименованы в цикле.
Что я пытаюсь достичь:
- Data.xls из папки 20181001 переименовать в 20181001.xls
- Данные.xls из 20181008 переименовывает папку в 20181008.xls
Исправленный код все еще читает $zipFolderChild
как полный путь, как я могу извлечь имя папки ТОЛЬКО вместо этого?
EDIT3:
Попытка вставить переименование в цикл, но не знаю, как заставить работать аргумент -NewName
, очистка $zipFolderChild.Name.xls
не работает.Также пробовал:
$folder= $zipFolderChild.Name
#file rename command that I have not written yet
$rename = "-path", "$zipOutPath\Data.xls" ,"-NewName", "$folder.xls"
& Rename-Item @rename
внутри цикла, тоже не работает.
НАКОНЕЦ РАБОТЫ:
$7ZipPath = "C:\7z\7za"
$zipFolderRoot = "Z:\long folder path\Test Folder\Unzip Test"
$zipOutPath = "Z:\long folder path\Test Folder\Unzip Test\Unzip"
$zipFilePassword = "TEST123"
ls -path $zipFolderRoot -directory -Exclude Unzip
Foreach ($zipFolderChild in (ls -path $zipFolderRoot -directory -Exclude Unzip))
{
$zipFile = "$zipFolderChild\Data.zip"
$cmd = "& $7ZipPath x -o'$zipOutPath' -y -p$zipFilePassword ""$zipFile"""
iex $cmd
$folder= $zipFolderChild.Name
$xlsFile = "$zipOutPath\Data.xls"
$NewName = "$zipOutPath\$folder.xls"
& Rename-Item -Path "$zipOutPath\Data.xls" -NewName $NewName
}