PDA

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


Gablik
29-09-2011, 22:07
@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
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"




© OSzone.net 2001-2012