Показать полную графическую версию : [решено] Изменение файла и его использование в *bat
Partiship
30-03-2013, 19:33
Наткнулся на такую проблему. Извиняюсь, я - новичок.
Вот в чем дело. Хотелось бы, чтобы данные записанные в файл, например Results.txt - можно было изменить.
И измененную строку из этого файла, как-нибудь экспортировать в *bat (или как это называется), чтобы по этому пути скопировать файл в папку, например %COMPUTERNAME%\Library.
copy C:\Users\Profile.ini %COMPUTERNAME%
@findstr "Path=Profiles" %COMPUTERNAME%\Profiles.ini>%COMPUTERNAME%\Results.txt
MD %COMPUTERNAME%\Library
copy C:\Results.txt %COMPUTERNAME%\Library
Вместо Results.txt - должен он видить путь. Чтобы вместо Results.txt стоял путь, тот что в самом Results.txt записан.
Как бы чтобы в последней строке, он эту строку ставил в путь, и по нему находил что нужно.
(Я не знаю, как это правильно выразить, как смог)
Буду признателен.
Хотелось бы, чтобы данные записанные в файл, например Results.txt - можно было изменить. »
, а что есть проблемы с блокнотом )))))
Я не знаю, как это правильно выразить, как смог »
вы уж как то по другому объясните, ну ничего не понятно....
Partiship
31-03-2013, 11:10
Хотелось бы чтобы батник все делал сам.
Суть вот в чем. Есть Папка, пусть будет Папка1. В Папке1 лежит другая Папка2.xxx. , где xxx неизвестно. Но в Папке1 лежит файл, в котором лежит название этого самого xxx .
Нужно скопировать все файлы из папки Папка2.xxx. . То есть я хочу, чтобы он из Папки1 брал файл, открывал его, я дописывал ему путь в этом файле к папке Папка2.xxx. и он бы копировал все из этой самой папки.
Partiship
31-03-2013, 14:48
Спасибо, нашел решение.
set /p variable=<%COMPUTERNAME%\Changed.txt
Появилась другая проблема. Копируются не все файлы и папки.
Вот код. Почему копируются не все файлы и папки?
xcopy C:\Users\%USERNAME%\AppData\Roaming\Mozilla\Firefox\Profiles\%variable% %COMPUTERNAME%\Library /H /E /G /Q /R /Y
@Echo off
Set KUDA=Papka3
For /f "Delims=" %%a In ('Dir /b Papka2*') Do Xcopy /e "%%a\*.*" "%KUDA%\"
Exit
есть Папка 1 в ней этот бат и Papka2.xxx, запускаем бат он копирует все файлы из Papka2.xxx в Papka3
C:\Users\%USERNAME%\AppData »
%AppData%
Partiship
31-03-2013, 17:38
Я не очень понял.
%AppData% »
Я не очень понял. »
Исполните в командной строке:
set AppData
Partiship
31-03-2013, 23:42
Я не совсем понял.
Я имел ввиду, почему копирует не все файлы и папки содержащиеся в папке %variable%
set /p variable=<%COMPUTERNAME%\Changed.txt xcopy C:\Users\%USERNAME%\AppData\Roaming\Mozilla\Firefox\Profiles\%variable% %COMPUTERNAME%\Password
Копирует не все файлы и папки
Partiship
01-04-2013, 13:02
Например в папке variable есть 4 папки и 15 файлов, так вот, папки не копируются вообще, а из 15 файлов копируются только 9. В папке разные файлы *db, *sqlite, *xml и тд. Не копируются файлы *db - никакие и еще пара файлов.
Если копировать их отдельно, то все замечательно.
Но мне нужно скопировать в подпапки и все файлы из папки variable.
Dragokas
01-04-2013, 13:03
Потому что:
set /p variable=<%COMPUTERNAME%\Changed.txt
считывает в переменную только 1-ю строку. А больше и нельзя.
Используйте цикл:
@echo off
for /f "UseBackQ delims=" %%A in ("%COMPUTERNAME%\Changed.txt") do (
xcopy "C:\Users\%USERNAME%\AppData\Roaming\Mozilla\Firefox\Profiles\%%A" "%COMPUTERNAME%\Password" /C /E /H /R /Y
)
Ключи для Xcopy /? сами подставите нужные.
Partiship
01-04-2013, 15:09
О, благодарю все отлично заработало!
А можете объяснить пожалуйста, что именно делает этот цикл ?
Вот здесь именно.
for /f "UseBackQ delims=" %%A in
Dragokas
01-04-2013, 15:52
UseBackQ в данном контексте - это страховка от возможных символов пробела в пути и/или имени файла. Поэтому вариант без UseBackQ менее предпочтителен.
Модификатор UseBackQ изменяет правила выбора действия в зависимости от вида кавычек под скобками.
Для двойных кавычек ("") - означает, что нужно построчно прочитать указанный в них файл.
"delims=" задает пустой разделитель вместо принятых по-умолчанию пробела и знака табуляции.
Это тоже страховка от пробелов, но уже при чтении содержимого самого файла. Иначе информация после пробела будет попадать во 2-й и далее токен (лексические части, разбитые разделителем).
%%A - объявление имени переменной цикла, куда будет попадать 1-й токен. После ключевого слова Do указывается точно в таком же виде, где и раскрывается в значение. Регистр имеет значение. (одна итерация цикла = 1 строке файла). Есть исключения. Подробности: For /?
for /f - ключ для использования специальных правил лексического разбора.
Может использоваться только при включенном режиме расширенной обработки команд.
В некоторых ОС такой режим отключен. Не будет лишним форсировать его включение. Добавьте после @echo off
SetLocal EnableExtensions
Partiship
01-04-2013, 18:59
Спасибо, большое! :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.