Я хочу скопировать и переименовать скопированный файл. Расширение файла ".ini". У меня есть несколько папок (банков) с 1985-2007 года. Каждая из этих папок (1985-2007) содержит папку cfgfiles, содержащую INI-файл, который я хочу скопировать и вставить в папку Russell -> 1985-2007 -> cfgfiles.

Мой код:

Function RenameMoveFile($oldlocationPath, $newlocationPath, $oldfileName, $newfileName, $Point, $year, $extension)
{

        $old = $oldlocationPath + $oldfileName + "_" + $Point + "_" + $year + $extension
        $new = $newlocationPath + $newfileName + "_" + $Point + "_" + $year + $extension
        copy-Item $old
        Rename-Item $old $new
}
$year = 1985..2007
Foreach ($i in $year)

       {
        RenameMoveFile -oldlocationPath "C:\SNOWPACK\Samarth\1_Banks\Point1\$i\cfgfiles\" -                             newlocationPath "C:\SNOWPACK\Samarth\10_Russell\Point1\$i\cfgfiles\" 
-oldfileName "Banks" -newfileName "Russell" -Point "P1" -$year "$i" -extension ".ini"
    }

1 ответ1

0

Это будет только рекурсивно смотреть через вашу папку рекурсивно в корень, который вы вводите в код.

Я надеюсь, что вы начали. Однако я не понимаю требований к остальной части вопроса.

$looking_for = "*.ini" # extension looking for
$path_from = "" # root of search;
$path_to = "" # where to drop found files, wont retain folder heirarchy;
$all_files_in_dir = Get-ChildItem -path $path_from -recurse -Include  
$looking_for | ForEach-Object -Process {$_.FullName};
New-Item -ItemType Directory -Force -Path $path_to # Create dest for you files
Foreach ($i in $year) { ## create your year folders
     $p = Join-Path $path_to $i
     New-Item -ItemType Directory -Force -Path $p
}
foreach( $i in $all_files_in_dir ) {
if ( $i -like $looking_for ) {
     Copy-Item $i $path_to
     if ( $? ) { # was last command succsesful?
          echo "$i copied to $path_to
     }
}
else {
    echo "ERROR: "
    throw $error[0].Exception
         }
     }
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .