lsof -i -n -P дает вам для каждого соединения процесс и конечные точки ...
@echo off
for /f "tokens=* delims= " %%i in ('dir /b/s/A-d') DO (
if "%%~xi" == "" rename "%%~fi" "%%~ni.bla"
)
Спасибо @Wadih M. Найти и переименовать файлы без расширения?
, это позволит вам вводить каталоги с пробелами в именах. (обратите внимание, что двойной% предназначен для командных файлов, используйте одиночный% для командных строк.)
for /f "tokens=* delims= " %%a in ('dir /b /ad /s') do rename "%%a\*." "*.bla"
Вы можете использовать для
для перебора подкаталогов:
for /d %x in (*) do pushd %x & ren *. *.bla & popd
При использовании из пакетного файла вам нужно будет удвоить знаки %
:
for /d %%x in (*) do pushd %%x & ren *. *.bla & popd
Вы можете легко сделать это и многое другое с помощью модуля Perl File :: Find .
#!perl
use strict;
use warnings;
use File::Find;
my $extension = 'bla';
my $directory = '/tmp/test';
print "Files renamed:\n";
find( \&wanted, $directory );
sub wanted {
return if /\./;
return unless -f $File::Find::name;
if ( rename( $File::Find::name, "$File::Find::name.$extension" ) ) {
print " $File::Find::name -> $File::Find::name.$extension\n";
}
else {
print " Error: $! - $File::Find::name\n";
}
}
Попробуйте это
for /R c:\temp %I in (*. ) DO Echo rename %I "%~nI.bla"