如何编写批处理文件以转到for循环内变量中提到的目录。
我有以下查询,该查询使我可以通过“文件选择”对话框选择文件,并且已将文件目录放置在变量path1中。
我需要转到该目录,然后再次在其中创建一个具有用户输入名称的文件夹。
我正在编写以下代码,但是回显!mypath!正在显示批处理文件所在的目录。
<# : chooser.bat
:: launches a File
@echo off
for /f "delims=" %%I in ('powershell -noprofile "iex (${%~f0} | out-string)"') do (
echo You chose %%~dpI >> E:\Rajan\test.txt
set "path1=%%~dpI"
setlocal EnableDelayedExpansion
echo !path1! >> E:\Rajan\test2.txt
cd /D "!path1!"
set /p name =Enter your name
set mypath=%cd%
echo !mypath! >> E:\Rajan\test3.txt
md "%name%"
endlocal
)
goto :EOF
: #>
Add-Type -AssemblyName System.Windows.Forms
$f = new-object Windows.Forms.OpenFileDialog
$f.InitialDirectory = pwd
$f.Filter = "Text Files (*.dmp)|*.dmp"
$f.ShowHelp = $true
$f.Multiselect = $false
[void]$f.ShowDialog()
if ($f.Multiselect) { $f.FileNames } else { $f.FileName }
答案 0 :(得分:1)
我想我把这个放在上一个问题上。
<# : chooser.bat
:: launches a File
@echo off
SET "THE_FILE="
for /f "delims=" %%I in ('powershell -noprofile "iex (${%~f0} | out-string)"') do (
echo You chose %%~I
SET "THE_FILE=%%~I"
)
CD /D "%THE_FILE%\..\"
set /p "name=Enter your name: "
set "mypath=%cd%"
echo %mypath% >>"E:\Rajan\test3.txt"
IF NOT EXIST ".\%name%" (md "%name%")
goto :EOF
: #>
Add-Type -AssemblyName System.Windows.Forms
$f = new-object Windows.Forms.OpenFileDialog
$f.InitialDirectory = pwd
$f.Filter = "Text Files (*.dmp)|*.dmp"
$f.ShowHelp = $true
$f.Multiselect = $false
[void]$f.ShowDialog()
if ($f.Multiselect) { $f.FileNames } else { $f.FileName }
答案 1 :(得分:1)
这是我的答案,这次使用powershell而不是jscript来调用对话框。
@Echo Off
SetLocal EnableExtensions
For /F Delims^=^ EOL^= %%G In ('^"
"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile ^
"(New-Object -COM 'Shell.Application').BrowseForFolder(0,'Select your directory.',1,0).Self.Path"
^"') Do MD "%%G\%UserName%"
您可以清楚地看到,使用for-loop输出的命令与我在上一个答案中提供的完全相同,并显示my comment是正确的。