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

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

Gablik 29-09-2011 22:07 1762683

Переместить файлы в которых больше 3-х знаков препинания
 
Код:

@echo off
setlocal ENABLEDELAYEDEXPANSION
if '%1'=='' (
echo No directory.
goto :end
) else (
pushd %1
)
echo Move files from %1
echo Move file to %2
echo -------------------------------------------
set /a count2=0
for %%i in (*) do (
set name=%%i
set /a count=0
for /l %%j in (0,1,255) do (
set "lit=!name:~%%j,1!"
if "!lit!"=="." set /a count=count+1
if "!lit!"=="," set /a count=count+1
if "!lit!"==":" set /a count=count+1
if "!lit!"==";" set /a count=count+1
if "!lit!"=="'" set /a count=count+1
if "!lit!"=="-" set /a count=count+1
)
if !count! GTR 3 (
echo %%i
move "%%i" %2
set /a count2=count2+1
)
)

if '!count2!'=='0' (
echo No files
echo -------------------------------------------
) else (
echo ---------------------------------
echo Moved file !count2!
echo ---------------------------------
)
:end
popd
@echo finished

вот что я написал.
но при запуске выдает она выводит имена файлов правильно но не перемещает их а пишет
"системе не удается найти заданный путь"

Foreigner 30-09-2011 06:51 1762825

Gablik,
Код:

@echo off
setlocal

set "dest=%~1"

for /f "tokens=*" %%i in ('dir /b /a-d') do call:check "%%~i"
goto:eof

:check
set "file=%~n1"
set "file=%file: =_%"
set "file=%file:.=,%"
set "file=%file:;=,%"
set "file=%file:'=,%"
set "file=%file:-=,%"

for %%i in (%file%) do set /a cnt+=1

if %cnt% grt 3 move %1 "%dest%"

for %%i in  (cnt file) do set "%%i="

Вызывать:
Код:

C:\> batnik "C:\destination"


Время: 21:44.

Время: 21:44.
© OSzone.net 2001-