Loop that appends filename when copying same filename from different folders to a new folder












0














I have the following code to search for a specific file name (ratings.zil) across multiple folders and copy them to a new folder:



for /R %f in (ratings.zil) do @IF EXIST %f copy "%f" "C:here"


But when the file copies to the new folder it overwrites instead of appending a number at the end of each ratings.zil – i.e. ratings(1).zil, ratings(2).zil. Is there a way to add a loop to the above code that will append a number after each file?



This question was originally marked as a duplicate, except the answer for the duplicate only works when you’re copying a file within the same folder.










share|improve this question
























  • You could perhaps link the former question, so one could use the code from there... Anyway, what have you tried yourself to solve that issue?
    – aschipfl
    Nov 20 '18 at 9:12










  • @aschipfl OP delete the previous question.
    – Gerhard Barnard
    Nov 20 '18 at 9:13












  • @greeny, have a look here at DBenham's answer, you would just need to ammend the code to add your ratings.zil instead.
    – Gerhard Barnard
    Nov 20 '18 at 9:14










  • Possible duplicate of Windows batch file to copy and keep duplicates
    – LotPings
    Nov 20 '18 at 9:17










  • @GerhardBarnard, thanks - I'll try...I'm not a programmer so that looks entirely confusing to me. Do the double % signs signify something that needs to be filled in with whatever is between the %%'s? i.e. %source% means I put the source path there instead of %source%?
    – Greeny
    Nov 20 '18 at 9:22
















0














I have the following code to search for a specific file name (ratings.zil) across multiple folders and copy them to a new folder:



for /R %f in (ratings.zil) do @IF EXIST %f copy "%f" "C:here"


But when the file copies to the new folder it overwrites instead of appending a number at the end of each ratings.zil – i.e. ratings(1).zil, ratings(2).zil. Is there a way to add a loop to the above code that will append a number after each file?



This question was originally marked as a duplicate, except the answer for the duplicate only works when you’re copying a file within the same folder.










share|improve this question
























  • You could perhaps link the former question, so one could use the code from there... Anyway, what have you tried yourself to solve that issue?
    – aschipfl
    Nov 20 '18 at 9:12










  • @aschipfl OP delete the previous question.
    – Gerhard Barnard
    Nov 20 '18 at 9:13












  • @greeny, have a look here at DBenham's answer, you would just need to ammend the code to add your ratings.zil instead.
    – Gerhard Barnard
    Nov 20 '18 at 9:14










  • Possible duplicate of Windows batch file to copy and keep duplicates
    – LotPings
    Nov 20 '18 at 9:17










  • @GerhardBarnard, thanks - I'll try...I'm not a programmer so that looks entirely confusing to me. Do the double % signs signify something that needs to be filled in with whatever is between the %%'s? i.e. %source% means I put the source path there instead of %source%?
    – Greeny
    Nov 20 '18 at 9:22














0












0








0







I have the following code to search for a specific file name (ratings.zil) across multiple folders and copy them to a new folder:



for /R %f in (ratings.zil) do @IF EXIST %f copy "%f" "C:here"


But when the file copies to the new folder it overwrites instead of appending a number at the end of each ratings.zil – i.e. ratings(1).zil, ratings(2).zil. Is there a way to add a loop to the above code that will append a number after each file?



This question was originally marked as a duplicate, except the answer for the duplicate only works when you’re copying a file within the same folder.










share|improve this question















I have the following code to search for a specific file name (ratings.zil) across multiple folders and copy them to a new folder:



for /R %f in (ratings.zil) do @IF EXIST %f copy "%f" "C:here"


But when the file copies to the new folder it overwrites instead of appending a number at the end of each ratings.zil – i.e. ratings(1).zil, ratings(2).zil. Is there a way to add a loop to the above code that will append a number after each file?



This question was originally marked as a duplicate, except the answer for the duplicate only works when you’re copying a file within the same folder.







windows batch-file cmd






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 20 '18 at 18:48









double-beep

1,3332723




1,3332723










asked Nov 20 '18 at 8:59









Greeny

33




33












  • You could perhaps link the former question, so one could use the code from there... Anyway, what have you tried yourself to solve that issue?
    – aschipfl
    Nov 20 '18 at 9:12










  • @aschipfl OP delete the previous question.
    – Gerhard Barnard
    Nov 20 '18 at 9:13












  • @greeny, have a look here at DBenham's answer, you would just need to ammend the code to add your ratings.zil instead.
    – Gerhard Barnard
    Nov 20 '18 at 9:14










  • Possible duplicate of Windows batch file to copy and keep duplicates
    – LotPings
    Nov 20 '18 at 9:17










  • @GerhardBarnard, thanks - I'll try...I'm not a programmer so that looks entirely confusing to me. Do the double % signs signify something that needs to be filled in with whatever is between the %%'s? i.e. %source% means I put the source path there instead of %source%?
    – Greeny
    Nov 20 '18 at 9:22


















  • You could perhaps link the former question, so one could use the code from there... Anyway, what have you tried yourself to solve that issue?
    – aschipfl
    Nov 20 '18 at 9:12










  • @aschipfl OP delete the previous question.
    – Gerhard Barnard
    Nov 20 '18 at 9:13












  • @greeny, have a look here at DBenham's answer, you would just need to ammend the code to add your ratings.zil instead.
    – Gerhard Barnard
    Nov 20 '18 at 9:14










  • Possible duplicate of Windows batch file to copy and keep duplicates
    – LotPings
    Nov 20 '18 at 9:17










  • @GerhardBarnard, thanks - I'll try...I'm not a programmer so that looks entirely confusing to me. Do the double % signs signify something that needs to be filled in with whatever is between the %%'s? i.e. %source% means I put the source path there instead of %source%?
    – Greeny
    Nov 20 '18 at 9:22
















You could perhaps link the former question, so one could use the code from there... Anyway, what have you tried yourself to solve that issue?
– aschipfl
Nov 20 '18 at 9:12




You could perhaps link the former question, so one could use the code from there... Anyway, what have you tried yourself to solve that issue?
– aschipfl
Nov 20 '18 at 9:12












@aschipfl OP delete the previous question.
– Gerhard Barnard
Nov 20 '18 at 9:13






@aschipfl OP delete the previous question.
– Gerhard Barnard
Nov 20 '18 at 9:13














@greeny, have a look here at DBenham's answer, you would just need to ammend the code to add your ratings.zil instead.
– Gerhard Barnard
Nov 20 '18 at 9:14




@greeny, have a look here at DBenham's answer, you would just need to ammend the code to add your ratings.zil instead.
– Gerhard Barnard
Nov 20 '18 at 9:14












Possible duplicate of Windows batch file to copy and keep duplicates
– LotPings
Nov 20 '18 at 9:17




Possible duplicate of Windows batch file to copy and keep duplicates
– LotPings
Nov 20 '18 at 9:17












@GerhardBarnard, thanks - I'll try...I'm not a programmer so that looks entirely confusing to me. Do the double % signs signify something that needs to be filled in with whatever is between the %%'s? i.e. %source% means I put the source path there instead of %source%?
– Greeny
Nov 20 '18 at 9:22




@GerhardBarnard, thanks - I'll try...I'm not a programmer so that looks entirely confusing to me. Do the double % signs signify something that needs to be filled in with whatever is between the %%'s? i.e. %source% means I put the source path there instead of %source%?
– Greeny
Nov 20 '18 at 9:22












1 Answer
1






active

oldest

votes


















0














Here is a slightly ammended version of DBenhams answer.



@echo off
setlocal disableDelayedExpansion

if "%~2" equ "" echo Error: Insufficient arguments>&2&exit /b 1
set "source=%~f1"
set "target=%~f2"

md "%target%"
set /a cnt=0
for /r "%source%" %%F in (ratings.zil) do if "%%~dpF" neq "%target%" (
if exist "%%F" (
if exist "%target%%%~nxF" (
set /a cnt+=1
set "full=%%F"
set "name=%%~nF"
set "ext=%%~xF"
setlocal enableDelayedExpansion
copy "!full!" "!target!!name!(!cnt!)!ext!" >nul
endlocal
) else copy "%%F" "%target%" >nul
)
)


In order to run this, you need to save the file as something like myRename.cmd then simply open cmd.exe and run it as:



myRename.cmd "C:Source of files" "D:Destination"


If you perfer to place this in a set directory and have a static destination folder and be able to just double click it, then this will do:



@echo off
setlocal disableDelayedExpansion

set "target=C:here"

md "%target%"
set /a cnt=0
for /r %%F in (ratings.zil) do if "%%~dpF" neq "%target%" (
if exist "%%F" (
if exist "%target%%%~nxF" (
set /a cnt+=1
set "full=%%F"
set "name=%%~nF"
set "ext=%%~xF"
setlocal enableDelayedExpansion
copy "!full!" "!target!!name!(!cnt!)!ext!" >nul
endlocal
) else copy "%%F" "%target%" >nul
)
)





share|improve this answer





















    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53389425%2floop-that-appends-filename-when-copying-same-filename-from-different-folders-to%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    Here is a slightly ammended version of DBenhams answer.



    @echo off
    setlocal disableDelayedExpansion

    if "%~2" equ "" echo Error: Insufficient arguments>&2&exit /b 1
    set "source=%~f1"
    set "target=%~f2"

    md "%target%"
    set /a cnt=0
    for /r "%source%" %%F in (ratings.zil) do if "%%~dpF" neq "%target%" (
    if exist "%%F" (
    if exist "%target%%%~nxF" (
    set /a cnt+=1
    set "full=%%F"
    set "name=%%~nF"
    set "ext=%%~xF"
    setlocal enableDelayedExpansion
    copy "!full!" "!target!!name!(!cnt!)!ext!" >nul
    endlocal
    ) else copy "%%F" "%target%" >nul
    )
    )


    In order to run this, you need to save the file as something like myRename.cmd then simply open cmd.exe and run it as:



    myRename.cmd "C:Source of files" "D:Destination"


    If you perfer to place this in a set directory and have a static destination folder and be able to just double click it, then this will do:



    @echo off
    setlocal disableDelayedExpansion

    set "target=C:here"

    md "%target%"
    set /a cnt=0
    for /r %%F in (ratings.zil) do if "%%~dpF" neq "%target%" (
    if exist "%%F" (
    if exist "%target%%%~nxF" (
    set /a cnt+=1
    set "full=%%F"
    set "name=%%~nF"
    set "ext=%%~xF"
    setlocal enableDelayedExpansion
    copy "!full!" "!target!!name!(!cnt!)!ext!" >nul
    endlocal
    ) else copy "%%F" "%target%" >nul
    )
    )





    share|improve this answer


























      0














      Here is a slightly ammended version of DBenhams answer.



      @echo off
      setlocal disableDelayedExpansion

      if "%~2" equ "" echo Error: Insufficient arguments>&2&exit /b 1
      set "source=%~f1"
      set "target=%~f2"

      md "%target%"
      set /a cnt=0
      for /r "%source%" %%F in (ratings.zil) do if "%%~dpF" neq "%target%" (
      if exist "%%F" (
      if exist "%target%%%~nxF" (
      set /a cnt+=1
      set "full=%%F"
      set "name=%%~nF"
      set "ext=%%~xF"
      setlocal enableDelayedExpansion
      copy "!full!" "!target!!name!(!cnt!)!ext!" >nul
      endlocal
      ) else copy "%%F" "%target%" >nul
      )
      )


      In order to run this, you need to save the file as something like myRename.cmd then simply open cmd.exe and run it as:



      myRename.cmd "C:Source of files" "D:Destination"


      If you perfer to place this in a set directory and have a static destination folder and be able to just double click it, then this will do:



      @echo off
      setlocal disableDelayedExpansion

      set "target=C:here"

      md "%target%"
      set /a cnt=0
      for /r %%F in (ratings.zil) do if "%%~dpF" neq "%target%" (
      if exist "%%F" (
      if exist "%target%%%~nxF" (
      set /a cnt+=1
      set "full=%%F"
      set "name=%%~nF"
      set "ext=%%~xF"
      setlocal enableDelayedExpansion
      copy "!full!" "!target!!name!(!cnt!)!ext!" >nul
      endlocal
      ) else copy "%%F" "%target%" >nul
      )
      )





      share|improve this answer
























        0












        0








        0






        Here is a slightly ammended version of DBenhams answer.



        @echo off
        setlocal disableDelayedExpansion

        if "%~2" equ "" echo Error: Insufficient arguments>&2&exit /b 1
        set "source=%~f1"
        set "target=%~f2"

        md "%target%"
        set /a cnt=0
        for /r "%source%" %%F in (ratings.zil) do if "%%~dpF" neq "%target%" (
        if exist "%%F" (
        if exist "%target%%%~nxF" (
        set /a cnt+=1
        set "full=%%F"
        set "name=%%~nF"
        set "ext=%%~xF"
        setlocal enableDelayedExpansion
        copy "!full!" "!target!!name!(!cnt!)!ext!" >nul
        endlocal
        ) else copy "%%F" "%target%" >nul
        )
        )


        In order to run this, you need to save the file as something like myRename.cmd then simply open cmd.exe and run it as:



        myRename.cmd "C:Source of files" "D:Destination"


        If you perfer to place this in a set directory and have a static destination folder and be able to just double click it, then this will do:



        @echo off
        setlocal disableDelayedExpansion

        set "target=C:here"

        md "%target%"
        set /a cnt=0
        for /r %%F in (ratings.zil) do if "%%~dpF" neq "%target%" (
        if exist "%%F" (
        if exist "%target%%%~nxF" (
        set /a cnt+=1
        set "full=%%F"
        set "name=%%~nF"
        set "ext=%%~xF"
        setlocal enableDelayedExpansion
        copy "!full!" "!target!!name!(!cnt!)!ext!" >nul
        endlocal
        ) else copy "%%F" "%target%" >nul
        )
        )





        share|improve this answer












        Here is a slightly ammended version of DBenhams answer.



        @echo off
        setlocal disableDelayedExpansion

        if "%~2" equ "" echo Error: Insufficient arguments>&2&exit /b 1
        set "source=%~f1"
        set "target=%~f2"

        md "%target%"
        set /a cnt=0
        for /r "%source%" %%F in (ratings.zil) do if "%%~dpF" neq "%target%" (
        if exist "%%F" (
        if exist "%target%%%~nxF" (
        set /a cnt+=1
        set "full=%%F"
        set "name=%%~nF"
        set "ext=%%~xF"
        setlocal enableDelayedExpansion
        copy "!full!" "!target!!name!(!cnt!)!ext!" >nul
        endlocal
        ) else copy "%%F" "%target%" >nul
        )
        )


        In order to run this, you need to save the file as something like myRename.cmd then simply open cmd.exe and run it as:



        myRename.cmd "C:Source of files" "D:Destination"


        If you perfer to place this in a set directory and have a static destination folder and be able to just double click it, then this will do:



        @echo off
        setlocal disableDelayedExpansion

        set "target=C:here"

        md "%target%"
        set /a cnt=0
        for /r %%F in (ratings.zil) do if "%%~dpF" neq "%target%" (
        if exist "%%F" (
        if exist "%target%%%~nxF" (
        set /a cnt+=1
        set "full=%%F"
        set "name=%%~nF"
        set "ext=%%~xF"
        setlocal enableDelayedExpansion
        copy "!full!" "!target!!name!(!cnt!)!ext!" >nul
        endlocal
        ) else copy "%%F" "%target%" >nul
        )
        )






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 20 '18 at 9:33









        Gerhard Barnard

        6,91631131




        6,91631131






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53389425%2floop-that-appends-filename-when-copying-same-filename-from-different-folders-to%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            "Incorrect syntax near the keyword 'ON'. (on update cascade, on delete cascade,)

            Alcedinidae

            RAC Tourist Trophy