Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Копирование одноимённых файлов (http://forum.oszone.net/showthread.php?t=233811)

BloodDick 30-04-2012 20:08 1908418

Копирование одноимённых файлов
 
Ребят, посдкажите как сделать так, чтобы одноимённые файлы, которые я задал для поиска, сохранялись в папку все. А не только один файл.
Приведу пример : я задал найти на компьютере текстовый документ "Музыка", этот документ есть на диске "C" и на диске "D"... А в папку сохранения сохраняется только один файл. Надеюсь доходчиво объяснил)

Iska 30-04-2012 20:50 1908447

Цитата:

Цитата BloodDick
Надеюсь доходчиво объяснил) »

Нет:
Цитата:

Цитата BloodDick
я задал найти на компьютере текстовый документ "Музыка" »

Как именно задали?

Foreigner 30-04-2012 20:57 1908452

BloodDick, надо копировать с переименованием или с другим путем. Как ты видишь конечную реализацию?

BloodDick 30-04-2012 20:58 1908453

@ECHO OFF
dir "C:\музыка.txt" "D:\музыка.txt"
S /B > c:\filelist.txt d:\filelist.txt f:\filelist.txt
md d:\13
for /F "tokens=*" %%i in (c:\filelist.txt) do copy /Y "%%i"

"D:\13\%%~nxi"
del c:\filelist.txt
del d:\filelist.txt
del f:\filelist.txt

чтобы например сохранялось: Музыка, музыка(1).
как то так.

а сохраняется только музыка. Тоесть один файл.

Foreigner 30-04-2012 21:03 1908456

Цитата:

Цитата BloodDick
как то так. »

Код:

@echo off
setlocal

2>nul md "d:\folder"
pushd "d:\folder"

for %%i in (c d f) do (

    for /f "tokens=*" %%j in (' dir /b /s /a-d "%%i:\Музыка.txt" ') do call:copy "%%j"

)

popd
goto:eof

:copy

if "%~dp1"=="d:\folder\" (goto:eof)
set "file="
if not exist "%~nx1" copy %1 && goto:eof

:check

set /a cnt+=1
set "ind=000%cnt%"
set "file=%~n1_[%ind:~-4%]%~x1"

if exist "%file%" goto:check

copy %1 "%file%"

Где d:\folder -- путь для копирования

BloodDick 30-04-2012 21:08 1908462

спасибо, это всё понел, всё получилось. А где сдесь прописано где именно ищет? for %%i in (c d f) - это?

Ребят всё разобрался, благодарю)

Foreigner 30-04-2012 21:12 1908466

Цитата:

Цитата BloodDick
А где сдесь прописано где именно ищет? »

for %%i in (c d f) -- диски на которых ищет

BloodDick 30-04-2012 21:15 1908469

Можете ещё подсказать, что прописать чтобы искало файлы , по заданому слову. Тоесть чтобы находила и копировала, все файлы к примеру со словом "Яблоко".

Iska 30-04-2012 21:44 1908490

BloodDick, для русского языка предусмотрено несколько кодировок.

BloodDick 30-04-2012 21:48 1908494

Цитата:

Цитата Iska
BloodDick, для русского языка предусмотрено несколько кодировок. »

Хотябы одну из них)

Foreigner 30-04-2012 21:55 1908502

Цитата:

Цитата BloodDick
все файлы к примеру со словом "Яблоко". »

В названии или с содержимым?

BloodDick 30-04-2012 21:56 1908503

с содержимым.

к примеру название файла "Новый текстовый документ"
Но он скопировался в папку потому что у него есть слово которое я задал "Яблоко".
Как такое осуществить?

Foreigner 30-04-2012 22:16 1908517

Цитата:

Цитата BloodDick
с содержимым. »

если искомое слово кириллическое, то тогда можно с помощью grep, т.к. findstr не находит
Код:

grep -rli "яблоко" *.*
findstr /m /s /i "test" *.*


BloodDick 30-04-2012 22:22 1908521

другово способа нет?

Iska 01-05-2012 00:03 1908565

Foreigner, в какой кодировке будет вестись поиск в:
Код:

grep -rli "яблоко" *.*
?

Anonymоus 01-05-2012 03:05 1908598

Iska, в той, в которой сохранен bat-файл. Если это UTF-8, надо BOM при сохранении отключать.

Iska 01-05-2012 03:11 1908600

Anonymоus, спасибо, ясно. В текущей кодировке.


Время: 22:45.

Время: 22:45.
© OSzone.net 2001-