Server IP : 180.180.241.3 / Your IP : 216.73.216.252 Web Server : Microsoft-IIS/7.5 System : Windows NT NETWORK-NHRC 6.1 build 7601 (Windows Server 2008 R2 Standard Edition Service Pack 1) i586 User : IUSR ( 0) PHP Version : 5.3.28 Disable Function : NONE MySQL : ON | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /Program Files (x86)/WinSCP/Extensions/ |
Upload File : |
# @name Batch &Rename... # @command powershell.exe -ExecutionPolicy Bypass -File "%EXTENSION_PATH%" ^ # -sessionUrl "!S" -remotePath "!/" -pattern "%Pattern%" ^ # -replacement "%Replacement%" -pause -sessionLogPath "%SessionLogPath%" ^ # %PreviewMode% !& # @description Renames remote files using a regular expression # @flag RemoteFiles # @version 4 # @homepage https://winscp.net/eng/docs/library_example_advanced_rename # @require WinSCP 5.13 # @option - -run group "Rename" # @option Pattern -run textbox "Replace file name part matching this pattern:" # @option Replacement -run textbox "with:" # @option - -run -config group "Options" # @option PreviewMode -run -config checkbox "&Preview changes" "-previewMode" ^ # "-previewMode" # @option - -config group "Logging" # @option SessionLogPath -config sessionlogfile # @optionspage https://winscp.net/eng/docs/library_example_advanced_rename#options param ( # Use Generate Session URL function to obtain a value for -sessionUrl parameter. $sessionUrl = "sftp://user:mypassword;fingerprint=ssh-rsa-xx-xx-xx@example.com/", [Parameter(Mandatory = $True)] $remotePath, [Parameter(Mandatory = $True)] $pattern, $replacement, [Switch] $pause, $sessionLogPath = $Null, [Switch] $previewMode, [Parameter(Mandatory = $True, ValueFromRemainingArguments = $True, Position = 0)] $files ) try { if ($previewMode) { $anyChange = $False foreach ($file in $files) { $newName = $file -replace $pattern, $replacement Write-Host "$file => $newName" if ($newName -ne $file) { $anyChange = $True } } Write-Host if (!$anyChange) { Write-Host "No change to be made" $continue = $False } else { Write-Host -NoNewline "Continue? y/N " $key = [System.Console]::ReadKey() Write-Host Write-Host $continue = ($key.KeyChar -eq "y") if (!$continue) { $pause = $False } } } else { $continue = $True } if (!$continue) { $result = 1 } else { # Load WinSCP .NET assembly $assemblyPath = if ($env:WINSCP_PATH) { $env:WINSCP_PATH } else { $PSScriptRoot } Add-Type -Path (Join-Path $assemblyPath "WinSCPnet.dll") # Setup session options $sessionOptions = New-Object WinSCP.SessionOptions $sessionOptions.ParseUrl($sessionUrl) $session = New-Object WinSCP.Session try { $session.SessionLogPath = $sessionLogPath # Connect $session.Open($sessionOptions) foreach ($file in $files) { $newName = $file -replace $pattern, $replacement Write-Host "$file => $newName" $fullName = [WinSCP.RemotePath]::CombinePaths($remotePath, $file) $fullNewName = [WinSCP.RemotePath]::CombinePaths($remotePath, $newName) $session.MoveFile($fullName, $fullNewName) } } finally { # Disconnect, clean up $session.Dispose() } & "$env:WINSCP_PATH\WinSCP.exe" "$sessionUrl" /refresh "$remotePath" } $result = 0 } catch { Write-Host "Error: $($_.Exception.Message)" $result = 1 } if ($pause) { Write-Host "Press any key to exit..." [System.Console]::ReadKey() | Out-Null } exit $result