编码:
for %%X in ("C:\Info\AUGUST 2011\Checklists\DET1__*") do (echo %%X)
Run Code Online (Sandbox Code Playgroud)
列出我想要的文件的名称:
DET1__)作为文件夹的标题我知道它不应该那么难,但我真的不熟悉使用 Windows 编写 shell 脚本,而且我无法在工作中访问 UNIX 样式的 shell。
这在 PowerShell 中大约容易一百倍,但这应该有效。可以在setlocal /?、set /?和 中找到对正在发生的事情的更好解释for /?。Batch 不是一种好的语言,因此我们必须做诸如使用ENABLEDELAYEDEXPANSION和使用之类的事情,!FILE!而不是%FILE%防止批处理文件设置变量一次而永不更新它。要记住的一个关键是文件名和文件夹名不能相同。所以你不能同时拥有一个文件,一个文件夹foo中C:\,例如。
我还没有真正测试过这些,所以请在做任何事情之前自己做。
@ECHO OFF
SETLOCAL
SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%X IN ("C:\Info\AUGUST 2011\Checklists\DET1__*") DO (
SET FILEPATH=%~fX
SET FILENAME=%~nxX
SET TEMPFILE=%~fX.tmp
MOVE "!FILEPATH!" "!TEMPFILE!"
MKDIR "!FILEPATH!"
MOVE "!TEMPFILE!" "!FILEPATH!\!FILENAME!"
)
ENDLOCAL
Run Code Online (Sandbox Code Playgroud)
PowerShell 版本:
$Files = Get-ChildItem -Path 'C:\Info\AUGUST 2011\Checklists\' -Filter 'DET1__*'
$Files | ForEach-Object {
$FileFullName = $_.FullName
$TempFileName = "$($FileFullName).tmp"
$DestinationFileName = "$FileFullName\$($_.Name)"
Move-Item $FileFullName $TempFileName
New-Item -Path $FileFullName -ItemType Directory
Move-Item $TempFileName $DestinationFileName
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11771 次 |
| 最近记录: |