1. открыть папку C:\scripttest
2. вытащить список всех файлов
3. переименовать их в *.log (изменить расширение на лог короче)
варианты решения на разных языках:
<?php
$dir = "C:\\scripttest\\";
$handle = opendir($dir);
while (false !== ($file = readdir($handle))) {
if ($file !== '.' && $file !== '..') {
rename($dir.$file, $dir.strtok($file, '.').'.log');
}
}
closedir($handle);
import os
directory = 'C:\\scripttest\\';
files = os.listdir(directory);
for i in range(0, len(files)):
os.rename(directory+files, directory+os.path.splitext(files)[0]+'.log');
[с#]using System;
using System.IO;
namespace zadacha
{
class Program
{
public static void Main(string[] args)
{
string[] files = Directory.GetFiles(@"c:\scripttest", "*");
foreach (string file in files)
{
string newfilename = string.Format("{0}.log", Path.GetFileNameWithoutExtension(file));
File.Move(file, @"c:\scripttest\"+newfilename);
}
}
}
}[/с#]
но решить её нужно именно на бат, иначе бат говно а я проспорю
вообщем вот что я накатал уже
@echo off
:var
setlocal enableextensions enabledelayedexpansion
:begin
c: && cd scripttest
for /f "tokens=*" %%a in ('dir /b *.*') do call :filefunction %%a
:filefunction
:: ———————–
:: Rename *.* to *.log
:: ———————–
:: @param string %1 file
:: @return string
:: ———————–
set ext=%1
set ext=%ext:*.=%
set name=%1
call :strlen %ext%
set /a length=%$returnvalue% + 1
set result=%name:~0,-4%
rem set name=%name:ext=log%
:: БЛЯ ВОТ ТУТ ПО ИДЕЕ Я ДОЛЖЕН УЖЕ ПЕРЕИМЕНОВАТЬ, НО Я ДОЛЖЕН СОСТРЯПАТЬ ИМЯ КОНЕЧНОГО ФАЙЛА
:: ИМЕЕТСЯ РАСШИРЕНИЕ КОНЕЧНОГО ФАЙЛА - log
:: ИМЕЕТСЯ ПОЛНОЕ ИМЯ НАЧАЛЬНОГО ФАЙЛА %1 (допустим 1.txt)
:: ИМЕЕТСЯ РАСШИРЕНИЕ НАЧАЛЬНОГО ФАЙЛА (допустим txt)
:: ПЛАНИРОВАЛ ВЫЧЕСТЬ ДЛИНУ СТРОКИ С КОНЦА ИЗ ПОЛНОГО ИМЕНИ ЧТОБЫ ПОЛУЧИТЬ НОРМАЛЬНОЕ ИМЯ
:: БЕЗ РАСШИРЕНИЯ, И ПОТОМ ЕГО СКОНКАТЕНИРОВАТЬ С РАСШИРЕНИЕМ log НО НИХУЯ НЕ ВЫХОДИТ
:: ВООБЩЕМ Я ХУЙ
:: ———————–
exit /b 0
:strlen
:: ———————–
:: Find String Length
:: ———————–
:: @param string %1
:: @return integer
:: ———————–
Set $returnvalue=0&Set $StringBuf=%~1
If ""=="%~1" GoTo :EOF
:strlenprocessor
Set /A $returnvalue+=1
Call Set $StringChr=%%$StringBuf:~%$returnvalue%%%
If ""=="%$StringChr%" GOTO :EOF
GoTo :strlenprocessor
* лютобешеноплачет.jpg *