Board logo

标题: [文件操作] 批处理如何重命名文件夹? [打印本页]

作者: next    时间: 2008-7-30 18:25     标题: 批处理如何重命名文件夹?

假设有 文件夹“bbb” 和 批处理文件“aaa.bat”
在注册表里添加了文件夹右键菜单,值为“aaa.bat %1”
想右击文件夹“bbb”,通过这个右键菜单,将“bbb”重命名为“bbb.txt”
还有,如果反过来,想右击文件夹“bbb.txt”(不是.txt文档,是文件夹),通过这个右键菜单,将“bbb.txt”重命名为“bbb”
这个aaa.bat应该如何写呢??

[ 本帖最后由 next 于 2008-7-30 20:17 编辑 ]
作者: namejm    时间: 2008-7-30 19:33

试试这个:
  1. @echo off
  2. for /f "delims=" %%i in ("%~1") do (
  3.     if /i "~x1"==".txt" (
  4.         ren "%~1" "%~n1"
  5.     ) else ren "%~1" "%~n1.txt"
  6. )
复制代码

作者: Batcher    时间: 2008-7-30 19:55

干吗这么麻烦?直接把ren命令写到注册表里面不就行了?
作者: next    时间: 2008-7-30 20:22

不行的
因为“ren %1 %1.txt ”中的“%1”包含了全路径,重命名失败

刚才找了这一段:
@echo off
cd %1
set "var=%cd%"
:loop
set "var1=%var:*\=%"
set "var=%var1%"
if not "%var1%"=="%var:\=%" goto loop
cd..
ren %var1% %var1%.txt
可以将“bbb”重命名成“bbb.txt”

但如果是“bbb.txt”重命名成“bbb”却不知道该怎么写~
作者: next    时间: 2008-7-30 20:23

不信你试一下“ren d:\abc d:\abc.txt”(abc是文件夹),因为包含全路径,所以失败了
作者: Batcher    时间: 2008-7-31 00:04

多看看帮助,你就知道怎样处理全路径的问题了^_^
for /?
In addition, substitution of FOR variable references has been enhanced
You can now use the following optional syntax:

    %~I         - expands %I removing any surrounding quotes (")
    %~fI        - expands %I to a fully qualified path name
    %~dI        - expands %I to a drive letter only
    %~pI        - expands %I to a path only
    %~nI        - expands %I to a file name only
    %~xI        - expands %I to a file extension only
    %~sI        - expanded path contains short names only
    %~aI        - expands %I to file attributes of file
    %~tI        - expands %I to date/time of file
    %~zI        - expands %I to size of file
    %~$PATH:I   - searches the directories listed in the PATH
                   environment variable and expands %I to the
                   fully qualified name of the first one found.
                   If the environment variable name is not
                   defined or the file is not found by the
                   search, then this modifier expands to the
                   empty string

The modifiers can be combined to get compound results:

    %~dpI       - expands %I to a drive letter and path only
    %~nxI       - expands %I to a file name and extension only
    %~fsI       - expands %I to a full path name with short names only
    %~dp$PATH:I - searches the directories listed in the PATH
                   environment variable for %I and expands to the
                   drive letter and path of the first one found.
    %~ftzaI     - expands %I to a DIR like output line





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2