我在一个文件夹中有大约600个文件,我需要将小写形式转换为大写。我无法在我的机器上安装任何应用程序,因为我们的IT不允许它,因此,我必须在PowerShell,CMD或VB中执行此操作。将文件名从大写转换为小写(Windows命令提示符或PowerShell)
示例文件:
dog_123.csv需要被转换到DOG_123.csv
预先感谢。
我在一个文件夹中有大约600个文件,我需要将小写形式转换为大写。我无法在我的机器上安装任何应用程序,因为我们的IT不允许它,因此,我必须在PowerShell,CMD或VB中执行此操作。将文件名从大写转换为小写(Windows命令提示符或PowerShell)
示例文件:
dog_123.csv需要被转换到DOG_123.csv
预先感谢。
在PowerShell中:
Get-ChildItem | Rename-Item -NewName { $_.Basename.ToUpper() + $_.Extension }
或更短:
ls | ren -n { $_.Basename.ToUpper() + $_.Extension }
你太棒了!非常感谢你。 – user2600242
这是最好的答案。在PowerShell中对代码进行编码/粘贴,然后指向您要将其重命名为文件的文件夹并运行。像冠军一样工作! – user2600242
在VBScript:
Set fso = CreateObject("Scripting.FileSystemObject")
For Each f In fso.GetFolder(".").Files
f.Name = UCase(fso.GetBaseName(f)) & "." & fso.GetExtensionName(f) & "_"
f.Name = Left(f.Name, Len(f.Name)-1)
Next
必须将文件重命名为一个临时的名头,因为FileSystemObject
的情况下, - 否则会抱怨文件已经存在。
有没有什么办法可以将它自动化并将其保存在.vbs脚本中,并且只需在文件夹内使用要重命名的文件运行它(双击)? – user2600242
当然。将我更新后的答案中的代码放到.vbs文件中,将其复制到您的文件夹并双击它。请注意,此代码对于存在临时名称的文件已存在的情况没有保护措施! –
这不起作用。 – user2600242
在批处理:
@ECHO OFF
SETLOCAL
FOR %%n IN (*) DO ECHO "%%n"|FINDSTR /L "! ^" >nul&IF ERRORLEVEL 1 (
SET "name=%%~nxn"
SETLOCAL enabledelayedexpansion
FOR %%a IN (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
) DO SET "name=!name:%%a=%%a!"
ECHO REN "%%~fn" "!name!"
endlocal
)
GOTO :EOF
注:不会重新命名包含!
或^
名称。 REN
命令只是ECHO
编。在REN
之前删除ECHO
关键字以实际重命名。
我将此脚本保存在记事本中,然后将其重命名为.bat文件...将其重命名为具有要重命名文件的文件夹,但无效。 – user2600242
虽然这只适用于ASCII文件名称。我猜你可以使用'||'而不是'&errorlevel 1',这样可以让眼睛更容易一些。 – Joey
这不起作用。 – user2600242
真的VB.NET?不是VBScript? – Joey