Чтобы вывести каждую непустую строку в файле, вы должны убедиться, что вы указали либо all tokens
, либо no delimiters
, (в зависимости от вашей задачи вам также может потребоваться предотвратить исключение строк, начинающихся с определенный символ, поведение по умолчанию For
состоит в том, чтобы игнорировать все строки, начинающиеся с точки с запятой, ;
) .
В этом случае я предпочитаю указать all tokens
; это, в отличие от указания разделителей no
, удалит все начальные пробелы из каждой строки (это предотвратит захват файлов, содержащих случайные начальные пробелы).
Вы не можете copy
файл, который не существует, вы можете подавить любую ошибку при попытке сделать это, используя 2>Nul
, но я бы посоветовал проверить, существует ли файл первым.
Когда вы copy
файл, вам нужно указать только место назначения, (вам нужно только указать имя файла, если вы его меняете) .
Вместо использования команды Copy
вместо команды XCopy
можно воспользоваться преимуществом создания каталога назначения, (с учетом прав доступа) , если он еще не существует .
Здесь приведен пример пакетного файла:
@For /F UseBackTokens^=*EOL^= %%A In ("find_file_list.txt") Do @If Exist "%%A" XCopy "%%A" "C:\test\">Nul
… и очень немного измененная версия, запускаемая из командной строки:
For /F UseBackTokens^=*EOL^= %A In ("find_file_list.txt") Do @If Exist "%A" XCopy "%A" "C:\test\">Nul