2017-02-14 8 views
0

Я все еще видел предыдущие выпуски, но я прошу об этом конкретном случае.Существует дублирующее имя файла, или файл не найден.

В настоящее время вы пытаетесь переименовать некоторые файлы, но я действительно хочу, чтобы файл с дублирующимся именем был перезаписан.

@echo off 
setlocal 
for /R %%A in ("tgt*.nif") do (
    set "fname=%%~A" 
    call ren "%%fname%%" "%%fname:*tgt=%%" 
) 
pause 

Любые предложения?

EDIT: Как указано в примере. Ну, это не реально, но просто положил его (читая это, это не «просто», но pft):

У меня есть два файла, один из которых - TimeGoog.pdf, а другой - Goog.pdf. Теперь у меня есть эти варианты этих двух файлов во многих папках, поэтому это могут быть TimeToot.pdf и Toot.pdf. Я хочу переименовать все TimeGoog.pdf в Goog.pdf, удалив старый файл Goog.pdf одновременно с его перезаписью.

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

+1

Вы пытались использовать команду 'move'? –

+0

@ MCND Нет, у меня нет. Чтобы быть настоящим, мои знания о партии - это мусор. Все, что я могу сказать, это то, что текущие файлы, которые у меня есть, уже находятся в папках, в которых они нуждаются, а также в предыдущем файле, который я пытаюсь перезаписать. –

+0

Что такое дублированные имена? На что они похожи? Может быть, пример в вашем посте может помочь. –

ответ

1
@echo off 
    setlocal enableextensions disabledelayedexpansion 

    for /r %%A in ("tgt*.nif") do (
     set "folder=%%~dpA" 
     set "fileName=%%~nxA" 
     setlocal enabledelayedexpansion 
      echo move /y "!folder!!fileName!" "!folder!!fileName:*tgt=!" 
     endlocal 
    ) 
    pause