Какова переменная среды для пути к рабочему столу?

Таблицы SQL представляют неупорядоченных множеств. SQL-запросы возвращают неупорядоченных наборов. , , с одним исключением: если самый внешний select имеет соответствующий order by.

Итак, order by в подзапросе не имеет никакого эффекта. Некоторые базы данных даже не допускают order by в этом случае. В других случаях может выглядеть , как будто результаты упорядочены, но изменения в данных или среде могут изменить это.

В вашем случае подзапрос не нужен. Вы, вероятно, знаете это, но вам следует написать:

SELECT p.*
FROM people p
WHERE p.people_Age BETWEEN 20 AND 25
ORDER BY p.age DESC
61
задан Kb. 18 September 2013 в 17:44
поделиться

8 ответов

Я обнаружил, что лучшее решение - использовать vbscript вместе с пакетным файлом.

Вот командный файл:

@ECHO OFF
FOR /F "usebackq delims=" %%i in (`cscript findDesktop.vbs`) DO SET DESKTOPDIR=%%i
ECHO %DESKTOPDIR%

Вот файл findDesktop.vbs:

set WshShell = WScript.CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("Desktop")
wscript.echo(strDesktop)

Могут быть и другие решения, но лично я считаю этот менее хакерским.

Я тестировал это на английском и французском ПК - похоже, работает (Windows XP).

HTH,

Юлиан Чербэною

14
ответ дан 24 November 2019 в 17:14
поделиться

Довольно старая тема. Но я хочу дать свои 2 цента...

я немного изменил tomasz86 решение, для взгляда в старом стиле "Папок Shell" вместо "Пользователя Папки Shell", таким образом, я не должен разворачивать envvar %userprofile %

Также от powershell/vbscript/etc нет никакой зависимости....

for /f "usebackq tokens=2,3*" %%A in (`REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Desktop"`) do if %%A==REG_SZ  set desktopdir=%%B
echo %desktopdir%

Hope это помогает.

0
ответ дан 24 November 2019 в 17:14
поделиться

Для безопасности следует использовать соответствующие API в Powershell (или VBScript)
. Используя PowerShell:

[Environment]::GetFolderPath("Desktop")

Скопируйте что-нибудь, используя Powershell:

Copy-Item $home\*.txt ([Environment]::GetFolderPath("Desktop"))

Вот пример VBScript, чтобы получить путь к рабочему столу:

dim WSHShell, desktop, pathstring, objFSO
set objFSO=CreateObject("Scripting.FileSystemObject")
Set WSHshell = CreateObject("WScript.Shell")
desktop = WSHShell.SpecialFolders("Desktop")
pathstring = objFSO.GetAbsolutePathName(desktop)
WScript.Echo pathstring
55
ответ дан 24 November 2019 в 17:14
поделиться

@ Ответ Дейва Вебба, вероятно, будет правильным. Единственное, о чем я могу думать, это CSIDLs:

CSIDL_DESKTOPDIRECTORY

Каталог файловой системы, использовавшийся для физически хранить файловые объекты на настольный компьютер (который не следует путать с самой папкой рабочего стола). A Типичный путь - C:\Documents и Settings\username\Desktop.

Понятия не имею, как до них добраться из командной строки.

1
ответ дан 24 November 2019 в 17:14
поделиться

Это не решение, но я надеюсь, что оно поможет: Это близко, за исключением того, что при KEY = %userprofile%\desktop копия выходит из строя, несмотря на то, что zdesktop=%userprofile%\desktop. Я думаю, потому что встроенный %userprofile% не переводится.

REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop>z.out
for /f "tokens=3 skip=4" %%t in (z.out) do set zdesktop=%%t
copy myicon %zdesktop%
set zdesktop=
del z.out

Поэтому он успешно разбирает ключ REG, но если ключ содержит встроенный %var%, он не переводится во время команды копирования

.
2
ответ дан 24 November 2019 в 17:14
поделиться

вы также можете открыть командную строку DOS и выполнить команду set.

Это даст вам представление о том, какие переменные окружения доступны в вашей системе.

например. - т.к. вы, где конкретно спрашиваете о неанглийском Windows - heres - это пример моей собственной немецкой версии (Window7-64bit) :

set > env.txt
type env.txt

ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\SOF\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPUTERNAME=VMSOF
ComSpec=C:\Windows\system32\cmd.exe
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\Users\SOF
LOCALAPPDATA=C:\Users\SOF\AppData\Local
LOGONSERVER=\\VMSOF
NUMBER_OF_PROCESSORS=2
OS=Windows_NT
Path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\TortoiseSVN\bin;C:\Program Files (x86)\CMake 2.8\bin;C:\Program Files (x86)\emacs-22.3\bin;C:\Program Files (x86)\GnuWin32\bin;
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=AMD64 Family 15 Model 67 Stepping 3, AuthenticAMD
PROCESSOR_LEVEL=15
PROCESSOR_REVISION=4303
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
PROMPT=$P$G
PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
PUBLIC=C:\Users\Public
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\Windows
TEMP=C:\Users\SOF\AppData\Local\Temp
TMP=C:\Users\SOF\AppData\Local\Temp
USERDOMAIN=VMSOF
USERNAME=SOF
USERPROFILE=C:\Users\SOF
VBOX_INSTALL_PATH=C:\Program Files\Sun\VirtualBox\
VS90COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\
windir=C:\Windows

4
ответ дан 24 November 2019 в 17:14
поделиться

Это не только не сработало бы для международной версии Windows, но и не сработало бы, если бы пользователь отредактировал реестр, чтобы его папка Desktop располагалась где-то в другом месте. Вы можете запросить в реестре расположение файла, используя команду REG:

REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop

Чтобы получить эту переменную, используйте нечто подобное:

FOR /F "usebackq tokens=3 skip=4" %%i in (`REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop`) DO SET DESKTOPDIR=%%i
FOR /F "usebackq delims=" %%i in (`ECHO %DESKTOPDIR%`) DO SET DESKTOPDIR=%%i
ECHO %DESKTOPDIR%
6
ответ дан 24 November 2019 в 17:14
поделиться

Ответ КБ на использование [Environment] :: GetFolderPath ("Desktop") , очевидно, является официальным Windows API для этого.

Однако, если вы работаете в интерактивном режиме в командной строке или просто хотите, чтобы что-то работало на вашем компьютере, символ тильды (~) относится к дому текущего пользователя. папка. Итак, ~ / desktop - это папка на рабочем столе пользователя.

14
ответ дан 24 November 2019 в 17:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: