1

В windows, как я могу настроить механизм, чтобы при перемещении файла в каталог, где файл с таким именем уже существовал, новый файл переименовывался случайным образом (или в <>. Ext)?

Случай использования: я просматриваю cheezburger, перетаскиваю изображение в папку. Проблема: все они названы i.chzbgr.jpg => конфликта. Windows предлагает заменить или не перемещать, даже не переименовывать ...

2 ответа2

1

Не идеальное решение, но я нашел и изменил сценарий, который отслеживает папку на наличие новых файлов, когда он обнаруживает новый файл, он автоматически переименовывает его со случайным числом. Скопируйте, вставьте следующее и сохраните его как файл .ps1. Запустите его из консоли powershell или cmd. (не забудьте включить запуск ps scipts).

$folder = 'Q:\Test\# Downloads'  # <-- Change as desired
$filter = '*.*'
$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{
 IncludeSubdirectories = $false        
 NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'
}
$onCreated = Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action {
 $path = $Event.SourceEventArgs.FullPath
 $name = $Event.SourceEventArgs.Name
 #$changeType = $Event.SourceEventArgs.ChangeType
 #$timeStamp = $Event.TimeGenerated
 if( $name -imatch "stop")
 {
    Unregister-Event -SourceIdentifier FileCreated;
    write-host "Monitoring stopped.";
    Exit(0);
 }
 else
 {
    $count=$(Get-Random -minimum 1 -maximum 999999);
    $p = Split-Path "$path" -Parent;
    $newName = "$p\$count-$name"
    while(test-path $newName)
    {
        $count=$(Get-Random -minimum 1 -maximum 999999);
        $newName = "$p\$count-$name";
    }
    Move-Item $path -Destination $newName -Force -Verbose
 }
}

Добавление в папку файла с именем "stop" останавливает мониторинг.

1

Я знаю, что это 3-летняя тема, но, возможно, кто-то (как я) найдет это полезным.

  1. Сделайте небольшую папку, например "___Stage", где-нибудь простым, возможно, в корне хранилища фотографий или музыки.

  2. Откройте эту папку в отдельном небольшом экземпляре проводника [windows] где-нибудь на рабочем столе. Сделайте его достаточно большим в визуальном размере, чтобы держать один файл в поле зрения - я установил квадрат размером около 2 дюймов и установил режим просмотра на большую иконку, чтобы сделать его достаточно большим, чтобы захватывать его, не будучи слишком точным.

  3. Перетащите ваш интернет / Firefox / Chrome / и т.д. файл на панель просмотра этой папки.

  4. Перетащите ОПЯТЬ из этой папки в нужную папку назначения. Это будет считаться каталогом к каталогу MOVE, который разблокирует волшебную опцию # 3 «Переместить новый файл с добавлением (x) для переименования и сохранить оба файла»

Виола.

Выше я пытался просто перетащить на рабочий стол, но при этом файл остается на рабочем столе, если вы не убьете «+», удерживая клавишу Shift (или клавишу Shift, если у вас настроена многокнопочная мышь). Почему-то win7 считает, что рабочий стол отличается от каталога.

Я знаю, что это глупо, но вам никогда не придется убирать руку с мыши или выслеживать конфликт имен и правильно его переименовывать.

Если вы не можете выдержать 01.jpg, 01(1).jpg, 01(2).jpg, вам придется переименовывать их по отдельности. Я не могу понять, почему win7 удалил функциональность опции # 3 из опции COPY, но включил ее в опцию MOVE.

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