Вы можете использовать PowerShell для этого, например
powershell -command "(dir <path> | sort 'LastWriteTime' -Descending | select -first 1).name"
И установить его в переменную:
for /f "tokens=*" %%i in ('powershell -command "(dir <path> | sort 'LastWriteTime' -Descending | select -first 1).name"') do set var=%%i
И с определенным c именем (как ваш вопрос)
powershell -command "(dir '<path>' | sort 'LastWriteTime' -Descending | ? {$_.name -match 'name'}| select -first 1).name"
и установить его в переменную
for /f "tokens=*" %%i in ('powershell -command "(dir '<path>' | sort 'LastWriteTime' -Descending | ? {$_.name -match 'name'}| select -first 1).name"') do set var=%%i
Это получит последний отредактированный файл / папку с name
в них (ig 123name, 1name2, name123 et c.).
Для «истинно-пакетного» решения вы можете сделать следующее:
dir "<path>" /o:d /t:w /b
Чтобы установить его в переменную:
for /f "tokens=*" %%i in ('dir "<path>" /o:d /t:w /b') do set var=%%i
To найти файлы в каталоге с name
в них:
dir "<path>" /o:d /t:w /b | findstr /i "name"
Чтобы установить его в переменную:
for /f "tokens=*" %%i in ('dir "<path>" /o:d /t:w /b | findstr /i "name"') do set var=%%i
и с переменной (применяется ко всем примерам, которые определяют переменную ) вы можете переименовать файл следующим образом:
ren %var% "newname"
Testing
Моя последняя редактируемая папка в моей пользовательской папке: Desktop
06/18/2020 01:15 PM <DIR> .
06/18/2020 01:15 PM <DIR> ..
04/15/2020 01:09 PM <DIR> .android
06/12/2020 03:23 PM <DIR> .atom
06/02/2020 04:44 PM <DIR> .config
06/06/2020 12:57 PM <DIR> .dotnet
03/14/2020 08:51 PM 16 .emulator_console_auth_token
06/03/2020 08:45 AM 275 .gitconfig
06/06/2020 12:51 PM <DIR> .omnisharp
05/26/2020 09:44 AM <DIR> .tooling
04/17/2020 12:31 PM <DIR> .VirtualBox
05/26/2020 09:27 AM <DIR> .vs
05/26/2020 09:43 AM <DIR> .vscode
06/12/2020 08:16 PM <DIR> 3D Objects
06/12/2020 08:16 PM <DIR> Contacts
06/18/2020 10:54 PM <DIR> Desktop
06/12/2020 08:16 PM <DIR> Documents
06/18/2020 05:34 PM <DIR> Downloads
06/12/2020 08:16 PM <DIR> Favorites
06/12/2020 08:16 PM <DIR> Links
06/12/2020 08:16 PM <DIR> Music
04/27/2020 08:59 PM 0 null
03/16/2020 01:50 PM <DIR> OneDrive
05/23/2020 01:55 PM <DIR> OpenVPN
06/12/2020 08:16 PM <DIR> Pictures
06/12/2020 08:16 PM <DIR> Saved Games
06/12/2020 08:16 PM <DIR> Searches
05/15/2020 05:10 PM <DIR> source
06/12/2020 08:16 PM <DIR> Videos
04/17/2020 12:19 PM <DIR> VirtualBox VMs
Примечание. Я запускаю эту форму в командной строке
Первый пример:
powershell -command "(dir <path> | sort 'LastWriteTime' -Descending | select -first 1).name"
Desktop
Второй:
for /f "tokens=*" %i in ('powershell -command "(dir | sort 'LastWriteTime' -Descending | select -first 1).name"') do set var=%i
set var=Desktop
Третий:
powershell -command "(dir | sort 'LastWriteTime' -Descending | ? {$_.name -match 'D'}| select -first 1).name"
Desktop
Fou rth:
for /f "tokens=*" %i in ('powershell -command "(dir | sort 'LastWriteTime' -Descending | ? {$_.name -match 'D'}| select -first 1).name"') do set var=%i
set var=Desktop
Решения True-Batch:
dir /o:d /t:w /b
.emulator_console_auth_token
OneDrive
.android
VirtualBox VMs
.VirtualBox
null
source
OpenVPN
.vs
.vscode
.tooling
.config
.gitconfig
.omnisharp
.dotnet
.atom
3D Objects
Contacts
Pictures
Favorites
Videos
Searches
Music
Documents
Saved Games
Links
Downloads
Desktop
Второй:
for /f "tokens=*" %i in ('dir /o:d /t:w /b') do set var=%i
set var=.emulator_console_auth_token
set var=OneDrive
set var=.android
set var=VirtualBox VMs
set var=.VirtualBox
set var=null
set var=source
set var=OpenVPN
set var=.vs
set var=.vscode
set var=.tooling
set var=.config
set var=.gitconfig
set var=.omnisharp
set var=.dotnet
set var=.atom
set var=3D Objects
set var=Contacts
set var=Pictures
set var=Favorites
set var=Videos
set var=Searches
set var=Music
set var=Documents
set var=Saved Games
set var=Links
set var=Downloads
set var=Desktop
Что в конечном итоге приведет к настройке %var%
на Desktop
Третий:
dir /o:d /t:w /b | findstr /i "D"
OneDrive
.android
.vscode
.dotnet
3D Objects
Videos
Documents
Saved Games
Downloads
Desktop
Четвертый:
for /f "tokens=*" %i in ('dir "<path>" /o:d /t:w /b | findstr /i "name"') do set var=%i
set var=OneDrive
set var=.android
set var=.vscode
set var=.dotnet
set var=3D Objects
set var=Videos
set var=Documents
set var=Saved Games
set var=Downloads
set var=Desktop
Если вам нужны только каталоги, вы можете сделать это:
True-Batch
dir "<path>" /a:d /o:d /t:w /b | findstr /i "name"
REM Set to Variable
for /f "tokens=*" %%i in ('dir "<path>" /a:d /o:d /t:w /b | findstr /i "name"') do set var=%%i
Часть Powershell
powershell -command "(dir '<path>' -directory | sort 'LastWriteTime' -Descending | ? {$_.name -match 'name'}| select -first 1).name
REM Set to variable
for /f "tokens=*" %%i in ('powershell -command "(dir '<path>' -directory | sort 'LastWriteTime' -Descending | ? {$_.name -match 'name'}| select -first 1).name"') do set var=%%i
Если вам нужны только файлы :
True-Batch
dir "<path>" /a:-d /o:d /t:w /b | findstr /i "name"
REM Set to Variable
for /f "tokens=*" %%i in ('dir "<path>" /a:-d /o:d /t:w /b | findstr /i "name"') do set var=%%i
Часть Powershell
powershell -command "(dir '<path>' -file | sort 'LastWriteTime' -Descending | ? {$_.name -match 'name'}| select -first 1).name
REM Set to variable
for /f "tokens=*" %%i in ('powershell -command "(dir '<path>' -file | sort 'LastWriteTime' -Descending | ? {$_.name -match 'name'}| select -first 1).name"') do set var=%%i