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

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

Ответить
Настройки темы
CMD/BAT - Вывод имени файла без первого символа

Новый участник


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

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


Добрый день! Подскажите, плиз, имеется -n количество файлов такого типа
012345b01.txt
074545c02.txt
........
045745dx1.txt

Как вывести имя файла без 1-го символа, в каждом файле он 1 и тот же, это "0", изменять имя файла и его содержимое крайне не рекомендуется!
Заранее благодарю!

Отправлено: 15:07, 27-06-2013

 

Ветеран


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

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


Цитата maxvtb:
Как вывести имя файла без 1-го символа »
Это зависит от того, где «имеется» и как Вы получаете эти имена: посредством set, for… Как?

В любом случае всё сведётся к подобному:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sFile=012345b01.txt
echo %sFile:~1%

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

Отправлено: 15:40, 27-06-2013 | #2



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

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


Ветеран


Contributor


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

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


если батник в той же папке что и файлы,то
Код: Выделить весь код
@Echo Off

SetLocal EnableExtensions EnableDelayedExpansion
FOR %%f IN (0*.txt) DO Set Name=%%~nxf&Echo !Name:~1!
Иначе в скобках укажите маску файлов с полным именем, для надёжности в кавычках и, если есть русские символы, батник должен быть в 866 кодировке

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 27-06-2013 в 16:28.

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

Отправлено: 15:46, 27-06-2013 | #3


Новый участник


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

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


Цитата megaloman:
если батник в той же папке что и файлы,то
Код:
@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion
FOR %%f IN (0*.txt) DO Set Name=%%~nxf&Echo !Name:~1!
Иначе в скобках укажите маску файлов с полным именем, для надёжности в кавычках и, если есть русские символы, батник должен быть в 866 кодировке
-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение »
Данный вариант выводит полное имя файла

Цитата Iska:
Это зависит от того, где «имеется» и как Вы получаете эти имена: посредством set, for… Как?
В любом случае всё сведётся к подобному:
Код:
@echo off
setlocal enableextensions enabledelayedexpansion
set sFile=012345b01.txt
echo %sFile:~1%
endlocal
exit /b 0
Это сообщение посчитали полезным следующие участники: »

Спасибо, Ваш, вариант хорошо работает, теперь бы это в цикл организовать....хотя медленно работать будет, вообщем принцип такой ...выводим имя файла без 1 символа , проверяем на наличие такого же файла (без 1 го символа) в другой папке и если нет, то копируем ....а файликов ежедневно около 200 и интервал между запусками 5 мин

да, еще, это процедурка будет вставлена в основной батник, который помимо перекладывания проверяет инфу в каждом файле, вернее на наличие определенной строки и в зависимости от этого меняет 1 символ в имени файла ..вот такая заморочка

Отправлено: 05:46, 28-06-2013 | #4


Новый участник


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

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


Вот если бы как то так в одну строку, но где то ошибка кроется
for /r %%a in (0????????.txt) do set name=%%a & echo %name:~1% || if NOT EXIST ?%%~na.txt copy ?%%a и путь куда

Отправлено: 07:03, 28-06-2013 | #5


Ветеран


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

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


Цитата maxvtb:
Вот если бы как то так в одну строку»
Зачем? Это же неудобно, придется использовать enabledelayedexpansion, да и читаемость страдает:
Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion

for /f %%i in ('dir /b c:\folder-1\*.txt') do set "name=%%i" && if not exist c:\folder-2\!name:~1! (copy c:\folder-1\%%i c:\folder-2\!name:~1!)

Отправлено: 07:22, 28-06-2013 | #6


Новый участник


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

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


как удобнее???

Отправлено: 07:42, 28-06-2013 | #7


Ветеран


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

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


maxvtb,
Код: Выделить весь код
@echo off
setlocal

pushd "c:\folder-1"
for /f "tokens=*" %%i in ('dir /b *.txt') do call:copy "%%i"
popd
goto:eof

:copy
set "name=%~1"
if not exist "c:\folder-2\%name:~1%" (copy %1 "c:\folder-2\%name:~1%")
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:48, 28-06-2013 | #8


Новый участник


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

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


Респект

Отправлено: 08:12, 28-06-2013 | #9



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Удаление последнего символа в каждой строке txt - файла Мария_Айдарова@vk Скриптовые языки администрирования Windows 14 01-08-2019 18:23
Любой язык - [решено] Как открыть/удалить несколько файлов одного расширения без указания имени файла 9119 Скриптовые языки администрирования Windows 1 14-12-2012 15:42
2010 - Некоторые вложения приходят без имени!(Вложение без имени №) svini221 Microsoft Office (Word, Excel, Outlook и т.д.) 0 04-02-2011 11:51
Проблемы с функцией StringRegExpReplace, требуется вывод первого вхождения в функцию dasksting AutoIt 3 11-01-2010 00:27
CMD/BAT - [решено] Запуск файла от имени без ввода пароля rdaler Скриптовые языки администрирования Windows 4 11-08-2009 14:56




 
Переход