Показать полную графическую версию : Вывод имени файла без первого символа
Добрый день! Подскажите, плиз, имеется -n количество файлов такого типа
012345b01.txt
074545c02.txt
........
045745dx1.txt
Как вывести имя файла без 1-го символа, в каждом файле он 1 и тот же, это "0", изменять имя файла и его содержимое крайне не рекомендуется!
Заранее благодарю!
Как вывести имя файла без 1-го символа »
Это зависит от того, где «имеется» и как Вы получаете эти имена: посредством set, for… Как?
В любом случае всё сведётся к подобному:
@echo off
setlocal enableextensions enabledelayedexpansion
set sFile=012345b01.txt
echo %sFile:~1%
endlocal
exit /b 0
megaloman
27-06-2013, 15:46
если батник в той же папке что и файлы,то@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion
FOR %%f IN (0*.txt) DO Set Name=%%~nxf&Echo !Name:~1!
Иначе в скобках укажите маску файлов с полным именем, для надёжности в кавычках и, если есть русские символы, батник должен быть в 866 кодировке
если батник в той же папке что и файлы,то
Код:
@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion
FOR %%f IN (0*.txt) DO Set Name=%%~nxf&Echo !Name:~1!
Иначе в скобках укажите маску файлов с полным именем, для надёжности в кавычках и, если есть русские символы, батник должен быть в 866 кодировке
-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение »
Данный вариант выводит полное имя файла
Это зависит от того, где «имеется» и как Вы получаете эти имена: посредством set, for… Как?
В любом случае всё сведётся к подобному:
Код:
@echo off
setlocal enableextensions enabledelayedexpansion
set sFile=012345b01.txt
echo %sFile:~1%
endlocal
exit /b 0
Это сообщение посчитали полезным следующие участники: »
Спасибо, Ваш, вариант хорошо работает, теперь бы это в цикл организовать....хотя медленно работать будет, вообщем принцип такой ...выводим имя файла без 1 символа , проверяем на наличие такого же файла (без 1 го символа) в другой папке и если нет, то копируем ....а файликов ежедневно около 200 и интервал между запусками 5 мин :)
да, еще, это процедурка будет вставлена в основной батник, который помимо перекладывания проверяет инфу в каждом файле, вернее на наличие определенной строки и в зависимости от этого меняет 1 символ в имени файла :) ..вот такая заморочка
Вот если бы как то так в одну строку, но где то ошибка кроется
for /r %%a in (0????????.txt) do set name=%%a & echo %name:~1% || if NOT EXIST ?%%~na.txt copy ?%%a и путь куда
Foreigner
28-06-2013, 07:22
Цитата 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!)
Foreigner
28-06-2013, 07:48
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%")
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.