编码:
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 次 |
最近记录: |