Я пытаюсь написать сценарий PowerShell, чтобы сделать следующее.
шаг 1
Переименуйте файлы в исходных (FTP-папках) каталогах, указав их «current_name_datetime.csv» в соответствии с исходным файлом «Source_list.csv». В этом файле есть каталоги «source, destination».
шаг 2
Скопируйте только что переименованные файлы в каталоги резервных копий в соответствии с пунктом назначения в Source_list.csv. В этом файле есть каталоги «источник, пункт назначения», в который я хочу посмотреть этот сценарий.
шаг 3
Переместить недавно переименованные файлы в конечный каталог назначения, которого нет в моем текущем скрипте.
--------------------- Мой сценарий ----------------------
$sdfiles = Get-Content c:\!tony\Source_list.csv
$sourceDir = "c:\test\"
$destinationDir = "c:\testing\"
Get-ChildItem $sourceDir -Recurse -Include $sdfiles "*.csv"|
ForEach-Object{
$newname= "{0}{1}_{2}.csv" -f $destinationDir, $_.BaseName,[datetime]::Now.ToString('MM-dd-yyyy-hh-mm-ss')
$_|Copy-Item -Include ,$sfiles -Destination $newname -whatif }
-----------------------Ошибка--------------------------
What if: Performing operation "Copy Directory" on Target "Item: C:\test\cscenter Destination: C:\testing\cscenter_10-01-2015-12-22-24.csv".
Я вижу в ошибке, что она пытается скопировать каталог, а не отдельный файл в каждом каталоге, и создает новую папку, используя исходное имя папки, переименовывает папку и добавляет метку даты / времени.
Любая помощь будет высоко ценится.
источник
-Include $sdfiles
. Параметр -Include принимает шаблон файла, а не файл. Я думаю, что вы должны разбить ваш скрипт, чтобы использовать промежуточные переменные (например$csvFiles = Get-ChildItem $sourceDir -Recurse -Include $sdfiles "*.csv"
). Затем выполните пошаговое выполнение сценария в PowerShell ISE и изучите содержимое промежуточных переменных, чтобы увидеть, содержат ли они то, что вы ожидаете. В основном вам нужно научиться отлаживать./source
включая (исключая) подкаталоги, должен быть скопирован в каталог/dest
и переименован в соответствии с информацией в файлеa.csv
. файлы, не перечисленные в,a.csv
должны (не) копироваться