#windows #command-line #windows-scripting
#Windows #командная строка #windows-скриптинг
Вопрос:
у меня есть текстовый файл, который содержит, например:
c:testtest1.txt;d:test2j.js;d:test22.cs
Мне нужно скопировать те файлы, которые разделены с помощью bat-файла командной строки Windows, в заданную папку, которая передается в bat-файл. Как я могу этого добиться?
Ответ №1:
На самом деле очень просто:
for /f %%l in (somefile.txt) do (
for %%f in (%%l) do (
copy "%%f" %1
)
)
Первый цикл выполняет построчную итерацию по файлу; второй цикл будет разделен на точки с запятой (и другие элементы, например, пробелы и запятые). Если имена файлов похожи на те, которые вы указали, это должно сработать.
Если пункты назначения копирования тоже выглядят подобным образом, просто добавьте еще два цикла, очевидно:
for /f %%l in (somefile.txt) do (
for %%f in (%%l) do (
for /f %%k in (destination.txt) do (
for %%g in (%%k) do (
copy "%%f" %%g
)
)
)
)
Комментарии:
1. что, если мне нужно скопировать пункт назначения, будет выглядеть следующим образом
2. @Joey когда я запускаю ————— для /f %%l в (d:BuildServerBuildScriptssourceFilelist.csv ) выполнить (для %%f в (%%l) выполнить (для %%k в (d:BuildServerBuildScriptsDestinationlist.csv ) выполните (для %%g в (%%k) выполните ( скопируйте «%%f» %%g ) ) ) ) ————- Файл Destinationlist.csv заменен списком исходных файлов и, наконец, его содержимое заменено последним файлом из списка исходных файлов, а вывод cmd выводит % g и% k как символы самостоятельно, т. Е. не со значениями, присвоенными им, не сработало, как я ожидал
3. @DSharper, задайте, пожалуйста, другой вопрос.
4. Просто измените
for %%k
наfor /f %%k
5. Ах, спасибо, мусио. Я должен признать, что не пытался понять, что рвота кода хотела сказать мне в комментарии DSharper.
Ответ №2:
Вы можете скопировать файлы из списка файлов с помощью следующей команды для пакетного файла:
for /f "usebackq delims=;" %%f in (filelist.txt) do copy %%f %1
Предполагая filelist.txt содержит имя каждого файла в отдельной строке:
c:testtest1.txt;
d:test2j.js;
d:test22.cs
Хотя понятия не имею, как разобрать одну строку.