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

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

Ответить
Настройки темы
CMD/BAT - [решено] Проверка соответствия имени файла

Аватара для rsod

Ветеран


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


Конфигурация

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


Нужно сделать так: если имя переданного файла (%1) содержит только символы латинского алфавита (A-Z,a-z), подчёркивания (_) и тире (-), а также не больше 60 символов, то надо только записать в какую-нибудь переменную исходное имя файла (для дальнейшего использования), а если это условие не выполнится, то файл надо скопировать во временную папку (это я сам знаю, как делается), затем его переименовать по шаблону file_YEAR-MONTH-DAY_HOUR-MINUTE-SECOND.ext, где YEAR, MONTH, DAY, HOUR, MINUTE, SECOND - текущие год, месяц, день, час, минута и секунда, ext - изначальное расширение файла, и записать в переменную уже новое имя файла. Помогите, пожалуйста

-------


Отправлено: 23:26, 02-08-2011

 

Googler


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

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


Код: Выделить весь код
@echo off
set DIR=c:\TEMP

set "$F="& set "$1=%~n1"
SetLocal EnableDelayedExpansion
echo:!$1!|findstr/xrc:"[A-Za-z_-]*"|findstr/vrc:".............................................................">Nul&& set "$F=+"
EndLocal& set "$F=%$F%"

if defined $F (
  set "VAR=%~n1"
  call echo VAR=%%VAR%%
) else (
  copy "%~1" "%DIR%\"
  ren "%DIR%\%~nx1" "%~n1_%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2%_%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%%~x1"
)
P.S. для стандартной локали: DD.MM.YYYY HH:MM:SS
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:42, 03-08-2011 | #2



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

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


Старожил


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

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


Еще вариант:
Код: Выделить весь код
@echo off

setlocal enabledelayedexpansion

set "fn=%~n1"
set "tempdir=z:\tmp\"

if "%fn:~60,1%"=="" (echo=%fn%|findstr "[^A-Za-z_-]">nul||set "name=%~1")
if not defined name (
   for /f "skip=1 tokens=1 delims=." %%d in ('wmic os get localdatetime') do set "dt=%%d"
   set "name=%fn%_!dt:~0,4!-!dt:~4,2!-!dt:~6,2!_!dt:~8,2!-!dt:~10,2!-!dt:~12,2!%~x1"
   copy "%~1" "%tempdir%"
   ren "%tempdir%%~nx1" "%name%"
)
echo %name%
pause>nul

Последний раз редактировалось SendMessage, 03-08-2011 в 15:17.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:05, 03-08-2011 | #3


Аватара для rsod

Ветеран


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

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


спасибо попробую оба варианта

-------


Отправлено: 18:52, 03-08-2011 | #4



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - проверка по имени папки AntiZero Скриптовые языки администрирования Windows 0 24-03-2011 12:16
CMD/BAT - [решено] Созд.*.txt по имени файла, с перемещением *.txt и файла в папку с именем файла. OSArev Скриптовые языки администрирования Windows 2 30-01-2011 11:58
CMD/BAT - Скачивание файла и проверка на отличия от файла на сервере. maslovt Скриптовые языки администрирования Windows 2 08-05-2010 19:54
Ошибка - Каракули в реестре "Синтаксическая ошибка в имени файла,имени папки или метке тома" permas Microsoft Windows 2000/XP 2 20-02-2010 19:30
Загрузка - Проверка на битость файла D-Skane Microsoft Windows 2000/XP 3 24-06-2008 16:43




 
Переход