Есть ли простой способ поменять местами имена двух файлов в Windows? Возможно, с помощью команды move в оболочке?
Желательно без использования внешнего программного обеспечения.

Пример: у меня есть fileA.txt и fileB.txt . После операции fileA.txt теперь называется fileB.txt , и наоборот.

2 ответа2

4

Простой трехэтапный процесс в Windows:

ren a.txt a.tmp
ren b.txt a.txt
ren a.tmp b.txt

Вы можете запустить это напрямую или сохранить в командном файле.

0

Вот пока 3 (три) шага объединены в единую командную строку:

@ren a.txt temp.tmp & @ren b.txt a.txt & @ren temp.tmp a.txt

Вот то, что switch-filename.cmd может быть использовано:

@echo off
if not "%4"=="" call :help %0
if "%3"=="/?" call :help %0
if "%2"=="/?" call :help %0
if "%1"=="/?" call :help %0
if "%1"=="" call :help %0
if "%1"=="" goto :eof
if "%2"=="" call :help %0
if "%2"=="" goto :eof
setlocal
if "%3"=="" set ch=echo
if "%3"=="#ok#" set ch=
call :v1 %1 %2
endlocal
echo.
echo [%date% %time%] Completed!
goto :eof
:help
echo.
echo Syntax: %1 FullPath\FileName01.Ext FileName02.Ext [enter]
echo.
echo         %1 C:\Win\Temp\SapGui_v1.txt SapGui_v5.txt [enter]
echo.
echo         %1 \\Svr\Tmp\GuiSAP_v0.txt GuiSAP_v9.txt [enter]
echo.
goto :eof
:v0
%ch% ren %1 tmp_%~n1%~x1
%ch% ren %2 %~n1%~x1
%ch% ren %~p1tmp_%~n1%~x1 %~n2%~x2
goto :selesai
:v1
set f01=%1
set f02=%2
echo f01 = %f01%
echo f02 = %f02%
%ch% ren %1 tmp_%~n1%~x1
if "%f01:~0,2%"=="\\" (
  %ch% ren \\%~p1%2 %~n1%~x1
  %ch% ren \\%~p1tmp_%~n1%~x1 %~n2%~x2
) else (
  %ch% ren %~p1%2 %~n1%~x1
  %ch% ren %~p1tmp_%~n1%~x1 %~n2%~x2
)
echo.
echo f01 = %f01%
echo       %f01:~0,2%
echo f02 = %f02%
echo       %f02:~0,2%
set f01=
set f02=
goto :eof

Любая идея для улучшения приветствуются. :)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .