4 Replies Latest reply: Apr 6, 2017 10:49 AM by Lee Mychajluk RSS

    how to copy and rename a file in cmd.exe

    Linda Monincx

      Hi,

       

      Iam using qlikview to make a copy of some of my sources, i do that with cmd.exe /C xcopy $(vExec) /Y;  where $(vExec) is containing "from location" "end location"

       

      this works and makes a copy with the same name of the file

       

      I would like to change the name bij adding the FileDate behind the current name, anyone an idea how to put that in script?

       

      Many thanks!

       

      Linda Monincx

        • Re: how to copy and rename a file in cmd.exe
          Simone Spanio

          Hi,

          can you use a macro? If yes, try this:

           

          dim fso

          set fso = CreateObject("Scripting.FileSystemObject")

          fso.CopyFile "C:\foo.txt", "F:\foo2.txt"

           

          To copy an entire folder you can use:

           

          fso.CopyFile "C:\test\*.*", "F:\a\"

           

          Hope this help

          Simone

          • Re: how to copy and rename a file in cmd.exe
            Peter Cammaert

            Use the RENAME or REN command.

             

            I don't know about the File date (IMHO you should use PowerShell for that) but the current date and time can be used in commandline operations with these two shell variables:

             

            %date%    = returns the current date in the local format

            %time%    = returns the current time in the local format

             

            You can lift parts of these strings by using this format:

             

            %date:~n,m%

             

            where n is the start position and m is the length of the substring you need. The same format applies to %time%.

             

            For example, if the current date is printed as "Tu 13/01/2015", then

             

            ECHO %date:~9,4% will get you the year.

             

            Use these variables in the specification for the target name, like

             

            REN ABC.QVD ABC-%date:~9,4%%date:~6,2%%date:~3,2%.QVD

             

            In any case, using CMD.EXE batch files to reach your goal will always seem like a dated and limited method.

             

            Edit: Indices start at 0 (zero)

            • Re: how to copy and rename a file in cmd.exe
              John Smith

              Hi Linda,

               

              I am in need of moving log file from server to my NAS drive. Server has access to NAS. I would like to try your method but not sure how to. Is this what need to be written in the QVW script:

               

              sub ProcLogMove

              Set vExec = "C:\IBM\1.qvw.log" "C:\IBM\1\1.qvw.log";

              cmd.exe /C xcopy $(vExec) /Y;

              End Sub

               

              Please could you guide.

              Thanks.

              • Re: how to copy and rename a file in cmd.exe
                Lee Mychajluk

                You can get the File Time of the source file with the FileTime() function and append it to the target filename in your vExec variable. You can use the date and date format functions to get the file's timestamp into a format you like.

                https://help.qlik.com/en-US/qlikview/12.1/Subsystems/Client/Content/Scripting/FileFunctions/FileTime.htm

                 

                Personally, I would've created separate variables for the source and target locations/filenames to make it easier to track, but your method should be OK as well.