Pregunta Script de PowerShell para Renombrar - Copiar - Mover


Estoy tratando de escribir un script de PowerShell para hacer lo siguiente.

paso 1

Cambie el nombre de los archivos de los directorios de origen (carpetas FTP) por "current_name_datetime.csv" de acuerdo con un archivo de origen "Source_list.csv". Este archivo tiene los directorios "origen, destino" que quiero que vea este script.

paso 2

Copie los archivos recién renombrados a los directorios de respaldo según el destino en Source_list.csv este archivo tiene los directorios "fuente, destino" en los que quiero que se vea este script.

paso 3

Mueva los archivos recién renombrados al directorio de destino final que no está en mi script actual.

--------------------- My Script ----------------------

$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 }

-----------------------Error--------------------------

What if: Performing operation "Copy Directory" on Target "Item: C:\test\cscenter Destination: C:\testing\cscenter_10-01-2015-12-22-24.csv".

Veo en el error que está tratando de copiar el directorio, no el único archivo en cada directorio y crear una nueva carpeta usando el nombre de la carpeta original y cambiar el nombre de la carpeta y anexar el sello de fecha / hora.

Cualquier ayuda sería muy apreciada.


2


origen


¿Intentó escribir en la pantalla el comando que está tratando de ejecutar para intentar ejecutarlo? Es una técnica de depuración habitual ... a menudo en el paso de la abstracción puede pasar algo que la aplicación de un caso real señala ... :) - Hastur
Sí, lo he intentado también, sin suerte. Soy nuevo en power-shell y necesito ayuda. - Tonyrcom
Esto me parece extraño: -Include $sdfiles. El parámetro -Incluir toma un patrón de archivo, no un archivo. Creo que deberías dividir tu script para usar variables intermedias (p. $csvFiles = Get-ChildItem $sourceDir -Recurse -Include $sdfiles "*.csv" ) A continuación, realice un paso por la secuencia de comandos en PowerShell ISE y examine los contenidos de las variables intermedias para ver si contienen lo que está esperando. Básicamente, debes aprender a depurar. - dangph
Parecería que esta tarea no se puede completar en unas pocas líneas de código, creo que los archivos deben ser renombrados en su directorio actual, luego se copian a la carpeta de respaldo y finalmente se mueven a la ubicación final. - Tonyrcom


Respuestas: