Is there a single PowerShell command to copy and rename files?

前端 未结 2 502
傲寒
傲寒 2021-02-03 21:25

I am using the following command to copy files from a network share to my local hard drive based on a CSV file.

import-csv C:\\TEST\\test.csv | foreach {copy-ite         


        
相关标签:
2条回答
  • 2021-02-03 22:03

    If you have a CSV containing two columns, oldfilepath and newfilename, then you can use the following.

    Import-Csv C:\test.csv | % { Copy-Item -Path $_.oldfilepath -Destination "C:\TEST\$($_.newfilename)" }
    

    Notice how the $_.newfilename is encapsulated inside a $(). That's because $_.newfilename is an expression (since we are getting a property out of the variable), and not a variable. $() tells PowerShell to solve the expression before using it in the string. If we don't use it, it would have used the whole csv-object for that row($_) as a string and returned an error.

    0 讨论(0)
  • 2021-02-03 22:12

    If your original CSV also had the new name in it, you would be able to use it to specify a filename onto the end of your copy path. The copy-item CMDlet allows you to specify the destination filename

    Copy-Item C:\TEST\file1.jpg C:\TEST\file2.jpg
    

    Will copy file1.jpg and rename it to file2.jpg

    To concatenate the variable onto the end of the path string, you'd use double quotes like this:

    Copy-Item C:\Path\To\File\file.ext "C:\Path\To\New\File\$newfilename"
    

    Note that the -path and -destination aren't really necessary as they're implied by the position.

    0 讨论(0)
提交回复
热议问题