Copy a list (txt) of files

后端 未结 5 1053
逝去的感伤
逝去的感伤 2020-11-29 22:27

I\'ve seen some scripts examples over SO, but none of them seems to provide examples of how to read filenames from a .txt list.

This example is good, so as to copy a

5条回答
  •  温柔的废话
    2020-11-29 23:06

    The following will copy files from a list and preserve the directory structure. Useful when you need to compress files which have been changed in a range of Git/SVN commits¹, for example. It will also deal with spaces in the directory/file names, and works with both relative and absolute paths:

    (based on this question: How to expand two local variables inside a for loop in a batch file)

    @echo off
    
    setlocal enabledelayedexpansion
    
    set "source=input dir"
    set "target=output dir"
    
    for /f "tokens=* usebackq" %%A in ("file_list.txt") do (
        set "FILE=%%A"
        set "dest_file_full=%target%\!FILE:%source%=!"
        set "dest_file_filename=%%~nxA"
        call set "dest_file_dir=%%dest_file_full:!dest_file_filename!=%%"
        if not exist "!dest_file_dir!" (
            md "!dest_file_dir!"
        )
        set "source_file_full=%source%\!FILE:%source%=!"
        copy "!source_file_full!" "!dest_file_dir!"
    )
    pause
    

    Note that if your file list has absolute paths, you must set source as an absolute path as well.


    [¹] if using Git, see: Export only modified and added files with folder structure in Git

提交回复
热议问题