Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Автозамена при перемещении

Ответить
Настройки темы
CMD/BAT - [решено] Автозамена при перемещении

Аватара для Tosyk

Старожил


Сообщения: 166
Благодарности: 0

Профиль | Отправить PM | Цитировать


У меня есть много одинаковых (по имени - Material3) папок в различных под папках, очень много, в эти папках находятся *.mat файлы, среди *.mat файлов попадаются одинаковые

скриптом:

Код: Выделить весь код
for /f "tokens=*" %%b in ('dir /b /s Material3') do move /y "%%b" "%%~dpb../.."
перемещаю все эти папки в одно место, т.о. все папки должны слиться в одну, а все файлы *.mat переместиться в эту папку с заменой соответсвенно, но несмотря на использование ключа /y (пробовал и /Y) скрипт постоянно спрашивает о замене, как сделать автозамену в скрипте?

Отправлено: 09:16, 15-01-2011

 

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата Tosyk:
всё это работает если в корне нет Material3 с файлами! »
само собой, до запуска скрипта этих папок там не должно быть, этот вариант батника не предусматривает многократный запуск

Цитата Tosyk:
я уже начинаю запутываться в вариантах »
дык и не постите код без нужды, вариант-то всего один в посте #43... но если есть проблемы, нужно отлаживать по частям, в посте #63 первая часть баника с формированием 1-го временного файла

Отправлено: 18:31, 29-01-2011 | #71



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Tosyk

Старожил


Сообщения: 166
Благодарности: 0

Профиль | Отправить PM | Цитировать


скрипт завершил работу: создал все папки (пустые) и 2 файла:

_only_mover_3_eng.$~1
_only_mover_3_eng.$~2 - пустой

что теперь делать?

Последний раз редактировалось Tosyk, 29-01-2011 в 20:08.


Отправлено: 18:44, 29-01-2011 | #72


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата Tosyk:
что теперь делать? »
1-й временный файл сформирован, значит 1-я часть батника отработала без ошибок... 2-я часть батника на базе $~1-файла строит список файлов для каждого подкаталога и записывает в файл $~2, вот её код:
Код: Выделить весь код
@echo on
set root=.\_export_
if not exist "%root%" echo Can't find root folder!& pause>nul& exit

SETLOCAL EnableDelayedExpansion
for %%a in ("%root%") do set "rpth=%%~fa"

type nul >"%~dpn0.$~2"
(for /f "usebackq delims=" %%a in ("%~dpn0.$~1") do (
for /f "delims=" %%b in ('dir/b/s/a-d "%%~a\*"2^>nul') do (set "$b=%%b"
>>"%~dpn0.$~2" echo "!$b:%%a=%~dp0%%~na!"?"%%~zb"?"!$b!"
)))
имя скрипта и $~1-файла должны совпадать, например:
Код: Выделить весь код
_only_mover_test.$~1
_only_mover_test.bat
запуск с выводом в лог:
Код: Выделить весь код
_only_mover_test.bat >_only_mover_test.log 2>&1

Последний раз редактировалось amel27, 31-01-2011 в 12:34.


Отправлено: 12:24, 30-01-2011 | #73


Аватара для Tosyk

Старожил


Сообщения: 166
Благодарности: 0

Профиль | Отправить PM | Цитировать


Не понимаю, а разве скрипт из #70 не должен был ничего переносить? В нём ведь написано moved и.т.д

Отправлено: 13:59, 30-01-2011 | #74


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Tosyk, если файл .$~2 пустой, значит спискок файлов для перемещения не сформирован - либо в подкаталогах из .$~1 скрипт не нашел файлов, либо какая-то другая ошибка - вот это и надо теперь выяснить...

P.S. все эти движения называются отладкой (частей) кода скрипта на реальных данных

Отправлено: 14:36, 30-01-2011 | #75


Аватара для Tosyk

Старожил


Сообщения: 166
Благодарности: 0

Профиль | Отправить PM | Цитировать


http://dl.dropbox.com/u/9919707/scri...over_3_eng.log

вот лог

_only_mover_3_eng.$~2 пустой

Отправлено: 15:24, 30-01-2011 | #76


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата Tosyk:
вот лог »
странно, но я не смог воспроизвести эту ошибку у себя на XP/2003, ведь если тупо:

- копируем в любой каталог два файла:
Код: Выделить весь код
_only_mover_test.$~1 - результат работы 1-й части скрипта (пост #63)
_only_mover_test.bat - скрипт из поста #73
- создаём в этом же каталоге папку "_export_" (пустую);
- запускаем скрипт:
Код: Выделить весь код
_only_mover_test.bat >_only_mover_test.log 2>&1
в результате должен создаться пустой _only_mover_test.$~2 (файлов нет), но БЕЗ ОШИБОК

немного подправил код в посте #73 - добавил кавычки, не знаю поможет или нет... попробуйте проделать описанную процедуру на другом компьютере без копирования всей папки, может в настройках дело, или код как-то странно копипастится с форума...

Отправлено: 12:49, 31-01-2011 | #77


Аватара для Tosyk

Старожил


Сообщения: 166
Благодарности: 0

Профиль | Отправить PM | Цитировать


попробовал с изменённым скриптом из поста #73, всё сработало, по крайней мере _only_mover_3_eng.$~2 теперь не пустой, приложил к посту файлы:

_only_mover_3_eng.$~1 -- 320 kb
_only_mover_3_eng.$~2 -- 19000 kb
_only_mover_3_eng.log -- 8500 kb

http://dl.dropbox.com/u/9919707/scri...ipt_working.7z

add:
распаковал снова всё в папку "./_export_/". Может быть теперь попробуем какую-то полную версию скрипта?

Последний раз редактировалось Tosyk, 09-02-2011 в 10:10.


Отправлено: 05:30, 09-02-2011 | #78


Аватара для Tosyk

Старожил


Сообщения: 166
Благодарности: 0

Профиль | Отправить PM | Цитировать


amel27, возможно ли продолжить наше обсуждение? вроде как в нужном направлении идём, хотелось бы закончить

Отправлено: 07:45, 10-02-2011 | #79


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Tosyk, за неделю уже забыл о чем речь....

3-й этап (требуется наличие файла .$~2):
читать дальше »
Код: Выделить весь код
@echo off
set root=.\_export_
if not exist "%root%" echo Can't find root folder!& pause>nul& exit

SETLOCAL EnableDelayedExpansion
for %%a in ("%root%") do set "rpth=%%~fa"

<nul set/p $="Sorting file list..."
sort /l "C" "%~dpn0.$~2" /o "%~dpn0.$~3"

echo OK

4-й этап (требуется наличие файла .$~3):
читать дальше »
Код: Выделить весь код
@echo off
set root=.\_export_
if not exist "%root%" echo Can't find root folder!& pause>nul& exit

SETLOCAL EnableDelayedExpansion
for %%a in ("%root%") do set "rpth=%%~fa"

<nul set/p $="Processing file list..."
set "$a="& set "$b="& set/a "$n1=0,$n2=0,$n3=0"
for /f "usebackq tokens=1-3 delims=?" %%a in ("%~dpn0.$~3") do (
 if not "!$a!"=="%%~a" (
   move "%%~c" "%%~a"
   set "$a=%%~a"& set "$b=%%~b"& set/a "$k=0,$n1+=1"
 ) else if not "!$b!"=="%%~b" (
   set/a "$k+=1,$n2+=1"& set "$k=000!$k!"& set "$b=%%~b"
   move "%%~c" "%%~dpna_!$k:~-4!%%~xa"
   ) else set/a $n3+=1
)

echo OK& echo(& echo Processed files all: !$n0!, including:& echo(
echo moved          : %$n1%
echo renamed        : %$n2%
echo copies detected: %$n3%

P.S. все изменения отразил в посте #43

Отправлено: 12:21, 11-02-2011 | #80



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Автозамена при перемещении

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Проблема с переносом разрешений при перемещении данных alnimo Microsoft Windows NT/2000/2003 5 21-12-2010 12:22
2003/XP/2000 - Изменение даты письма при перемещении между папками faktroot Microsoft Office (Word, Excel, Outlook и т.д.) 0 26-02-2010 17:58
Треск звука при перемещении мыши Dr. MefistO Непонятные проблемы с Железом 9 07-12-2008 14:26
Интерфейс - Неправильное отображение иконки файла при перемещении kopylovsergey Microsoft Windows 2000/XP 3 19-08-2008 11:24
[решено] Странная загрузка процессора при перемещении мыши DMGaster Microsoft Windows 2000/XP 12 13-09-2006 18:17




 
Переход